我在桌子上敲着我的頭在這裏的朋友。這是我想要完成的。我有一個Main類,它將創建一個新的線程。現在,線程完成工作後,它將執行一些小的清理操作,線程停止。但是,我在UI上有一個「停止」按鈕,當按下時,應該「做一些清理,然後殺死線程。問題是,我似乎無法更新我創建的新線程中的任何內容。Java - 無法停止從主類runnable
下面是一些片段:
主類
runner = new Thread(new Controller1(options));
runner.start();
在上面的代碼,我打電話給我的控制器1類,並在構造函數中設置一些「選項」這是工作好到目前爲止......
現在,在Controller1類中,這是wha我有...
public volatile static boolean stopped;
public void run() {
while(!stopped){
System.out.println("In run");
startProxy(proxyPort);
startWebDriver();
driver.get(http);
UIMainJSwing1.updateStartButton();
stopped=true;
}
//Run killAll to stop webdriver and the proxy
killAll();
System.out.println("Thread complete");
}
問題是,從主類,我不能調用或設置「停止」爲true。我可以調用runner.interrupt(),但問題是,由於線程死了,我的killAll()函數永遠不會運行,並且我剩下WebDriver和Proxy仍在運行。
While循環的好處,我想我把它放在那裏,因爲我試圖找到一種方法來阻止我的主要線程。現在我已經刪除了它,是的,它運行一次,但無論如何有一個覆蓋,將它從run()方法和killAll()? – Whnunlife 2012-03-20 15:53:28
該循環中的任何阻塞調用? – Tudor 2012-03-20 16:55:02
@Whnunlife如果你發現任何有用的答案,你應該upvote或接受它,即。格雷的回答。 – 2012-03-20 17:21:54