我在桌子上敲着我的头在这里的朋友。这是我想要完成的。我有一个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