[英]threading infinity loop java
在方法內部,我啟動了一個等待用戶輸入的線程(擺動按鈕)。 只有在輸入之后,線程才能關閉,並且該方法返回一個值。 我的問題是等待輸入的代碼不在該線程中運行,而是在其他地方運行:
String returnString = "";
Thread waitThread = new Thread(
() -> {
while (xy == null) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw THREAD_INTERRUPTED.toException();
}
}
}, "waitThread"
);
waitThread.start();
try {
waitThread.join();
} catch (InterruptedException e) {
throw THREAD_INTERRUPTED.toException();
}
// -> wait for user input -> xy != null -> waitThread ends -> main thread joins -> continue code:
returnString = xy;
return ReturnString;
為什么這是必要的? 因為該方法必須返回通過單擊按鈕在其他位置設置的值(xy)。
上面的代碼僅以無限循環結束,不允許與swing組件進行任何交互。
我想不是專業人士,我想主線程是用來捕獲交互事件的。 由於它被卡在waitThread.join();
,那是不可能的。 正確?
有沒有辦法重組它?
我認為您走錯了路。
單擊一個按鈕會導致一個事件,然后應該有一個ActionListener
對此做出反應。
並且該偵聽器可能會更新一些“狀態”內容,而您的其他線程正在讀取該信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.