有沒有一種方法可以讓我做的SwingWorker(在doInBackground方法)來對代碼的某一點,停在那裏,監視ceratin變量,然後繼續當變量變爲可接受值?讓SwingWorker的等待變量更新
我知道我能做到這一點:
do {
Thread.sleep(500);
} while (variable == false);
但是,這是做的一個非常醜陋的方式...
有什麼建議?
編輯: 所以等待和通知是那麼......不過,我absolutley不知道如何實現它,甚至讀取多個教程後...
因此,這裏是我目前的狀況:
我有一個的SwingWorker,做在doInBackground方法東西:
doInBackground()
{
doSomething();
//BLOCK (PAUSE) HERE
doSomethingElse();
}
在另一邊,我已經具有偵聽的對象連接,其被觸發時doSomething的();被執行。
doSomethingElse()存取並改變類似的東西作爲監聽器,因此,它們彼此干擾。
所以我的目標是添加一行代碼,這將提升擋掉的doInBackground()代碼的聽衆。下面是使用監聽器類的樣子:
public class myClass extends JPanel()
{
addComponentListener(new ComponentAdapter()
{
@Override
public void componentResized(ComponentEvent arg0)
{
doThings();
//LIFT BLOCK AND LET THE SWINGWORKER CODE CONTINUE
}
}
}
因此,操作的順序應該是:
doSomething();
doThings();
doSomethingElse();
另外,我可以從SwingWorker的訪問監聽器,而不是其他方式(但我可能能夠使其工作);
而最後一件事:監聽器不僅被調用的SwingWorker,它可以從其他來源(例如用戶)被調用,當SwingWorker的甚至沒有被instantialized。
爲什麼重複提問兩次相同的問題?爲什麼不澄清你之前的問題? – 2013-02-14 03:33:34
因爲我錯了。而且(以我的經驗),當我錯誤地問一個問題然後糾正問題時,我沒有得到任何迴應,至少不會有一段時間。 此外,這看起來比以前的一堆文本好得多。我做了清除前面的問題...... – Karlovsky120 2013-02-14 03:35:15
'對象#wait'和'對象#notify' – MadProgrammer 2013-02-14 03:37:02