两阶断终止就是在一个线程优雅的终止另外一个线程,优雅的意思就是给被打断的那个线程一个料理后事的机会。
注意:不能用stop方法直接停止线程,stop方法会真正的杀死线程,如果这个时候线程锁住了共享资源,那么当它被杀死后就没有机会释放锁了,其他线程也不能在获得锁了。
1、基本流程
2、代码实现
while(true) {
Thread current = Thread.currentThread();
if(current.isInterrupted()){
log.debug("料理后事");
break;
}
try{
Thread.sleep(1000);//情况1
log.debug("执行监控记录");//情况2
} catch (InterruptedException e) {
e.printStatckTrace();
//重新设置打断标记
currnt.interrupt();
}
}
isInterrupted()与interrupted()的区别:前者会清楚打断标记,后者不会