使用stop()方法会将线程完全终止,没有机会释放锁,这样会使锁永远无法释放。
使用System.exit(int)方法会杀死整个进程。
interrupted():测试当前线程是否中断 。 当前线程指运行this.interrupted()的进程,并且此方法具有清除状态的作用。
isInterrupted():测试线程是否已经中断,不是静态方法,需要创建出线程对象,测试该对象的中断状态,并且不会清除状态。
//两阶段终止模式
static Thread test3(){
Thread thread = new Thread(()->{
while (true) {
Thread thread1 = Thread.currentThread();
if (thread1.isInterrupted()){
System.out.println("料理后事。。。");
break;
}
System.out.println("运行。。。");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
thread1.interrupt();
}
}
});
return thread;
}
public static void main(String[] args) throws InterruptedException {
Thread thread = test3();
thread.start();
Thread.sleep(3500);
thread.interrupt();
}