führen Sie SwingWorker mehrmals aus

8

Ich möchte die SwingWorker-Unterklasse mehrmals verwenden können, wie ich es im java doc gelesen habe. "SwingWorker ist nur für die einmalige Ausführung vorgesehen. Wird SwingWorker mehr als einmal ausgeführt, führt dies nicht dazu, dass die doInBackground-Methode zweimal aufgerufen wird . "

Irgendwelche Ideen?

Danke

    
Feras Odeh 04.10.2010, 11:13
quelle

3 Antworten

8

Eine Instanz einer Klasse, die SwingWorker implementiert, kann tatsächlich nur einmal ausgeführt werden. Es gibt keine Einschränkungen beim Instanziieren von beliebig vielen Instanzen und deren Ausführung.

    
Boris Pavlović 04.10.2010, 11:24
quelle
1

Sie können nicht so viele benötigte Instanzen instanziieren und sie ausführen. In der SwingWorker-Klasse existiert javax.swing.SwingWorker. MAX_WORKER_THREADS = 10. Sie können also maximal 10 Instanzen ausführen. Eine Instanz wird nur freigegeben, wenn sie 10 Minuten im Leerlauf ist. Verwenden Sie die SwingWorker-Instanz nicht als Thread-Instanz, sie ist kein Thread.

    
user2772139 12.09.2013 10:05
quelle
0

Versuchen Sie Folgendes:

%Vor%

Wie die Beschreibung: "Der AppContext ist eine Tabelle, auf die ThreadGroup verweist, die Anwendungsdienst-Instanzen speichert."

Dieses Problem tritt also im Grunde auf, weil der AppContext den Namen des Threads mit dem Namen SwingWorker ... speichert. Wenn Sie also versuchen, eine andere Instanz des Threads zu erstellen, werden Sie wahrscheinlich keinen Erfolg haben, da er den Namen des Threads vorher auswertet einen neuen ausführen oder zumindest den neuen in den Stapel von Threads einfügen, die ausgeführt werden sollen, zögern Sie nicht, den Code hier zu lesen:

Ссылка

PS: Wichtig: "Wenn Sie keinen Anwendungsdienst schreiben oder nicht wissen, was einer ist, verwenden Sie diese Klasse bitte nicht"

    
kar 10.11.2014 16:30
quelle