我想等待我的SwingWorker完成工作,然后我想执行另一个SwingWorker。在这种情况下,Encrypteer3是一个扩展SwingWorker的类。等待SwingWorker完成
我的代码:
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
}
这使我的GUI冻结,并使用大量的CPU(执行此当Java使用约95%的CPU)。我认为问题在于它经常检查线程是否完成,这就是CPU占用太多的原因。
SwingWorker类没有join()方法。我怎样才能使这个CPU密集度更低?
异常(S)问题在于我根据情况使用该SwingWorker的次数不同。我使用了PropertyChangeListener,并且做到了这一点!谢谢你的回答 – user1026090
@ user1026090:是的,PropertyChangeListener是另一种解决问题的好方法。 1+给你和java,mkorbel和kowser。 –