Trate de hacer esto:
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
}
Como la descripción: "El AppContext es una tabla referenciada por ThreadGroup que almacena instancias de servicio de la aplicación."
Así que este problema ocurre básicamente porque AppContext está guardando el nombre del subproceso llamado SwingWorker ..., por lo que si intenta crear otra instancia del subproceso, probablemente no tendrá éxito, ya que evalúa el nombre del subproceso antes de ejecutar una nueva o al menos poner el nuevo en el montón de hilos para ser ejecutado, no dude en consultar el código aquí:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/awt/AppContext.java
PS: Importante: "Si usted no está escribiendo un servicio de aplicación, o no sé cuál es, no use esta clase "
¿Quiere decir que quiere reutilizar su clase de implementación de SwingWorker, o instancia de la clase? – Qwerky
No sé si recibí algo mal, pero cuando creo instancias de trabajo y llamo al método execute() no se ejecuta nada. Sin embargo, cuando traté de llamar al método doInBackground(), los trabajadores ejecutaron –