Prova a fare questo:
private void startTask() {// main method that creates the background task or class that implements the SwingWorker
AppContext appContext = AppContext.getAppContext();
if(appContext!=null){
appContext.remove(SwingWorker.class);
}
MassiveMigrationTask task = new MassiveMigrationTask();// class that implements the SwingWorker
task.execute();// this process implicitly adds the SwingWorker.class to the appContext
}
Come la descrizione: "L'AppContext è una tabella a cui fa riferimento ThreadGroup che memorizza le istanze di servizio delle applicazioni"
Quindi questo problema sta accadendo fondamentalmente perché l'AppContext sta salvando il nome del thread chiamato SwingWorker ..., quindi se provi a creare un'altra istanza del thread probabilmente non avrai successo, perché valuta quel nome del thread prima di eseguire un nuovo o almeno mettere il nuovo nel mucchio di fili da eseguire, non esitate consultando il codice qui:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/awt/AppContext.java
PS: Importante: "Se non si sta scrivendo un servizio applicativo, o non so di cosa si tratta, per favore non usare questa classe "
Vuoi dire che vuoi riutilizzare la classe di implementazione SwingWorker o l'istanza della classe? – Qwerky
Non so se ho qualcosa di sbagliato ma quando creo istanze worker e chiamo il metodo execute() non viene eseguito nulla. Tuttavia, quando ho provato a chiamare il metodo doInBackground() i lavoratori eseguiti –