Tôi muốn đợi SwingWorker của mình hoàn thành công việc, và sau đó tôi muốn thực hiện một SwingWorker khác. Trong trường hợp này Encrypteer3 là một lớp mở rộng SwingWorker.Đợi SwingWorker hoàn thành
Mã của tôi:
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
}
Điều này làm cho GUI đóng băng của tôi và sử dụng rất nhiều CPU (java sử dụng khoảng 95% CPU khi thực hiện điều này). Tôi nghĩ rằng vấn đề là nó liên tục kiểm tra nếu thread được thực hiện và đó là những gì làm cho nó để CPU chuyên sâu.
Không có phương thức join() trên lớp SwingWorker. Làm thế nào tôi có thể làm cho CPU này ít tốn kém hơn?
vấn đề là tôi sử dụng SwingWorker một số lần khác nhau tùy thuộc vào tình hình. Tôi đã sử dụng PropertyChangeListener và điều đó đã làm được điều đó! cảm ơn cho câu trả lời – user1026090
@ user1026090: có, PropertyChangeListener là một cách tuyệt vời để giải quyết vấn đề của bạn. 1+ cho bạn và với java, mkorbel và kowser. –