2010-05-10 12 views
5

Ich fragte mich, welcher wäre der effizienteste Ansatz, um irgendeine Art von Hintergrund-Aufgabe in Java zu implementieren (ich denke, das wäre eine Art von nonblocking Threads). Um genau zu sein - ich habe etwas Java-Code und dann muss ich irgendwann eine lang andauernde Operation ausführen. Ich möchte diese Operation im Hintergrund ausführen, damit der Rest des Programms weiter ausgeführt werden kann, und wenn diese Aufgabe abgeschlossen ist, aktualisieren Sie einfach ein bestimmtes Objekt, das. Diese Änderung würde dann von anderen Komponenten erkannt werden.Java Hintergrund Aufgabe

Antwort

2
+1

Ja, das ist, was ich suchte, insbesondere Executors, .. Danke. – markovuksanovic

+0

Könnten Sie eine eigene Antwort über Testamentsvollstrecker geben? Ich wollte eine sehr ähnliche Frage stellen. Ich denke, dass Executors als eine spezifische Antwort erwähnt werden sollten. Ich würde es eine Aufwertung geben. Ich möchte keine Antwort geben, um zu stehlen. Zumal JEE das Laichen neuer Threads abrät. – Wes

-1

Naïve Idee: Sie könnten in der Lage sein Thema zu erstellen, ist es eine niedrige Priorität geben und tun eine Schleife aus:

  • ein wenig Arbeit zu tun
  • mit Ertrag oder Schlaf zu anderen Threads lassen arbeitet in parrallel

das würde davon abhängen, was Sie wollen eigentlich in deinem Thread

6

Sie tun möchten, einen neuen Thread machen; je nachdem, wie lange das Verfahren sein muss, können Sie es inline machen:

// some code 
new Thread(new Runnable() { 
    @Override public void run() { 
     // do stuff in this thread 
    } 
}).start(); 

Oder einfach nur eine neue Klasse machen:

public class MyWorker extends Thread { 
    public void run() { 
     // do stuff in this thread 
    } 
} 

// some code 
new MyWorker().start(); 
+0

Wäre es hier nicht möglich, dass der langlaufende Thread die CPU stiehlt und die anderen Threads nicht laufen lassen? – phtrivier

+0

Das Erstellen neuer Threads wird in JEE nicht empfohlen. – Wes

-1

Ja, Sie gehen wollen Sie den Vorgang ab Spin auf seinen eigenen Thread. Das Hinzufügen neuer Threads kann ein wenig gefährlich sein, wenn Sie nicht vorsichtig sind und wissen, was das bedeutet und wie Ressourcen interagieren. Hier ist eine gute introduction to threads, um Ihnen den Einstieg zu erleichtern.

0

einen Thread machen. Markieren Sie diesen Thread als Daemon. Die JVM wird beendet, wenn der einzige laufende Thread alle Daemon-Threads sind.

Verwandte Themen