Quiero esperar a que mi SwingWorker termine de funcionar, y luego quiero ejecutar otro SwingWorker. En este caso, Encrypteer3 es una clase que amplía el SwingWorker.Espere a que SwingWorker termine
Mi código:
input = txtTekst.getText();
key = txtKey.getText();
System.out.println("thread1 start");
Encrypteer3 a = new Encrypteer3();
a.execute();
while(a.isDone()==false){
// do nothing
}
input = output;
key = txtKey1.getText();
System.out.println("thread2 start");
Encrypteer3 b = new Encrypteer3();
b.execute();
while(b.isDone()==false){
// do nothing
}
Esto hace que se bloquea el GUI y utiliza una gran cantidad de CPU (java utiliza alrededor del 95% de la CPU cuando se ejecuta este). Creo que el problema es que constantemente se comprueba si el hilo está hecho y eso es lo que lo hace tan intensivo en la CPU.
No hay método join() en una clase SwingWorker. ¿Cómo puedo hacer esto menos intensivo de la CPU?
el problema es que utilizo ese SwingWorker un número diferente de veces dependiendo de la situación. ¡Utilicé el PropertyChangeListener y ese fue el truco! gracias por la respuesta – user1026090
@ user1026090: sí, un PropertyChangeListener es otra gran manera de resolver su problema. 1+ para ti y para java, mkorbel y kowser. –