Thread t1 = new Thread(() -> {
log.debug("死循环...");
while (true){
}
/*try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
*/
});
t1.start();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
t1.interrupt();
log.debug("t1被打断了.");
log.debug("{}",t1.isInterrupted());
调用t1.interrupt()
,对于正常运行的线程t1,只会设置其打断标记,不会影响其执行。
但上面的代码在junit单元测试方法中,当主线程结束子线程也会结束,在普通的类中测试则不会出现这种情况。