简单。如何在JDK 1.6或1.7中停止然后处置线程? Javadoc说不推荐使用stop()。什么是停止/结束然后处置线程的正确方法?
答案 0 :(得分:1)
http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#interrupt%28%29
调用thread.interrupt() - 应该做你想要的事情
答案 1 :(得分:1)
你不能在Java中停止/杀死一个线程。您实际可以做的是定期检查某些条件,然后从run()
方法返回,这意味着完成线程。一些阻止调用(例如Thread.sleep()
)支持中断,只要另一个线程使用InterruptedException
方法中断它,就会抛出threadToBeInterrupted.interrupt()
。
您可以通过实例方法Thread.currentThread().isInterrupted()
或静态方法Thread.interrupted()
定期检查中断状态(如果没有阻塞调用)。后者清除了中断状态。
答案 2 :(得分:0)
有几种方法可以做到这一点。我假设你的run()
方法中有某种循环。要离开/退出线程,你只需要打破循环。现在的问题是:如何打破这个循环?有几种方法,例如:
boolean
表达式您可以使用boolean
表示该主题应该完成如下:
volatile boolean stopThread;
...
void run() {
...
while(!Thread.currentThread.isInterrupted() && !stopThread) {
// do some stuff
}
}
public void stopThread() {
stopThread = true;
}