Ben*_*s G 2 java multithreading future interrupt
我发现这个解决方案知道一个线程是否被中断了.
public class OurThread extends Thread(){
private volatile boolean stop = false;
public void run(){
while (!stop) {
//Do your actions
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的run方法只执行一次,所以将insisde放在while循环中是没有意义的.我发现的另一种方法是检查Thread.isInterrupted()标志,然后终止线程.我的run()方法很长,所以我必须检查很多次这种情况使我的代码变脏.
我必须将它应用到四个不同的过程中,所以我试图找到一个更简单,更清洁的方法.我希望是否有类似的东西:
try{//my code}
catch(interrumption)
Run Code Online (Sandbox Code Playgroud)
问题是,由于我的线程是通过使用future.cancel()进行中断的,因此我的run()代码中没有抛出中断,然后我也无法做到这一点.
有什么建议吗?到目前为止,如果线程被取消,我会在代码之间检查很多次.谢谢 :)
首先,不要扩展Thread,你应该实现Runnable或Callable.
其次你可以添加一个方法
static void checkInterrupt() {
if(Thread.currentThread().isInterrupted())
throw new IllegalStateException("Interrupted");
}
Run Code Online (Sandbox Code Playgroud)
把它放在四个地方.这不会增加太多代码,也不会像不会停止的任务一样难看.