我有一個GUI,其中當點擊一個按鈕時,必須啓動一個while循環。但在啓動while循環時,GUI將暫停,直到while循環終止。有什麼辦法可以繞過這個嗎?Java while while循環沒有暫停當前線程
回答
我想一般防止這種情況發生,就應建立另一個Thread
冗長的計算,然後更新通過EDT的GUI(使用SwingUtilities.invokeLater(Runnable);
)
所以你的情況,當按下該按鈕,它會是這樣的:
final Thread thread = new Thread(
new Runnable(){
public void run(){
while(condition){
.....
}
//update gui
}
}
);
thread.start();
或者,如果你使用的是Java 8中,您可以使用lambda表達式:
final Thread thread = new Thread(
() -> {
while(condition){
.....
}
//update gui
}
);
thread.start();
你可以刪除while
通過利用作爲某種監聽器的interface
進行循環。
謝謝,那很好。 – user1959216
將你的while循環包裝在一個Runnable中,並開始使用線程運行。注意:new Thread(r).run();
將在同一個線程上運行它。下面的代碼不應該。
Runnable r = new Runnable() {
public void run() {
while(whatever){
//do stuff
}
}
}
new Thread(r).start();
正如@kayton所說,將您的代碼包裝在Runnable中。 (或者可能是Callable)
但是,如果您不斷創建並在您的代碼中創建自己的線程,它很快就會變得難以管理。改爲查看ExecutorService或SwingWorker。
爲什麼downvote?至少有禮貌和勇氣來解釋。 – user949300
從設計的角度來看,這更多的是建議,而不是解決技術問題,我認爲暫停GUI並不是一個好主意。你可以展示一個旋轉的圓圈,告訴用戶窗簾後面有一些動作。暫停屏幕可能會讓用戶惱火。
- 1. 暫停while循環但while循環不應該停止
- 2. Java while循環和線程!
- 3. while while循環? (JAVA)
- 4. JAVA while while循環
- 5. while while循環Java
- 6. While循環問題:不會暫停
- 7. Android - 使用while循環停止線程
- 8. while循環不會停止循環Java
- 9. Java while while循環不循環
- 10. while while while循環while循環
- 11. Java while while循環問題
- 12. Java while while循環問題
- 13. while while while while while循環
- 14. java while循環
- 15. Java while循環
- 16. while循環Java
- 17. Java while循環
- 18. 線程在Java中與while循環
- 19. bash的while循環線程
- 20. time.sleep塊while循環線程
- 21. ANDROID - while循環內線程
- 22. while循環沒有執行
- 23. while while循環
- 24. while while循環
- 25. Java ... while循環程序
- 26. while循環在EOF之前停止線程
- 27. 的Java while循環沒有的println
- 28. pthread_cond_wait沒有while循環
- 29. Ruby嵌套while循環提前停止
- 30. c while循環停止前條件
我想你應該提供一些代碼。 –
在新線程中啓動你的while循環。 – pepuch
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ – assylias