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
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.
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.
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"
Tags und Links java multithreading swingworker