Hola,
Para ser mas específico puedes probar lo siguiente:
Código Java:
Ver originalpackage org.sample;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventListener;
import javax.swing.event.EventListenerList;
public class Worker
extends Thread {
@Override
public void run() {
try {
System.
out.
println("Working..."); fireActionPerformed
(new ActionEvent(this,
1000,
"FIN")); }
}
}
}
protected void fireActionPerformed
(ActionEvent actionEvent
) { for (int i = 0, n = listenerList.length; i < n; i++) {
}
}
}
Código Java:
Ver originalpackage org.sample;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public static void main
(String[] args
) { Main main = new Main();
for (int i = 0; i < 5; i++) {
Worker worker = new Worker();
worker.addActionListener(main);
worker.start();
}
}
@Override
System.
out.
println("El objeto " + e
+ " ha finalizado con ID " + e.
getID() + "."); }
}
En este caso es el main el que recibe el evento cuando se ha finalizado de ejecutar el worker, y toda la información relevante del objeto que finalizó se recibe en ActionEvent e, también puedes crear una clase que extienda ActionEvent para que contenga la información que creas necesaria.
Saludos,