[英]How to wait for a thread to do something before continuing on another thread in Java?
我有一個用JFormDesigner創建的名為Welcome的圖形用戶界面。 我要等到在該表單上單擊一個按鈕后才能繼續我的申請。
我正在使用synchronized
並實例化GUI作為對象來執行此操作。
synchronized(new Welcome()) {
wait();
}
在我的GUI內,有一個開始按鈕,單擊該按鈕可運行以下命令:
public void startScript() {
synchronized(this) {
notify();
}
// Close the GUI
dispose();
}
GUI成功加載,但是,出現此錯誤:
線程“ main”中的異常java.lang.Object.wait(本機方法)處的java.lang.IllegalMonitorStateException dtohh.main.Main。(Main.java:處的java.lang.Object.wait(Object.java:502)處的異常20)在dtohh.tests.Tests.main(Tests.java:11)
我什至無法按一下GUI上的“開始”按鈕。 然后,當我按下按鈕時,腳本結束,僅此而已。
我添加了此代碼以測試其是否正常運行:
synchronized(new Welcome()) {
wait();
}
System.out.println("Test");
但是在按下按鈕后,應用程序退出,並且不顯示輸出。 如何等待按鈕被正確按下?
我設法弄清楚了,我需要等待Welcome.class
實例,並在第二個線程上使用this
進行通知。
主線程:
Welcome gui = new Welcome();
syncronized(gui) { gui.wait(); }
第二個線程:
private void onStart() {
syncronized(this) { notifyAll(); }
dispose();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.