【发布时间】:2011-12-28 01:22:12
【问题描述】:
我想等待我的 SwingWorker 完成工作,然后我想执行另一个 SwingWorker。在这种情况下,Encrypteer3 是一个扩展 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 密集度?
【问题讨论】:
标签: java multithreading swing concurrency swingworker