use*_*090 7 java concurrency swing multithreading swingworker
我想等待我的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
}
Run Code Online (Sandbox Code Playgroud)
这使我的GUI冻结并使用了大量的CPU(java在执行时使用了大约95%的CPU).我认为问题是它不断检查线程是否已完成,这是什么使它如此CPU密集.
SwingWorker类上没有join()方法.如何减少CPU占用?
我认为使用空循环是个坏主意,SwingWorker 有
protected void done()
Run Code Online (Sandbox Code Playgroud)
您可以在其中定义完成时执行的代码,如果您想在软件之外执行,则可以使用侦听器和触发操作
| 归档时间: |
|
| 查看次数: |
9091 次 |
| 最近记录: |