用 interrupt 打断 park(阻塞)线程
- isInterrupted() 判断是否被打断, 不会清除 打断标记不会清除 打断标记不会清除 打断标记
- interrupted 判断当前线程是否被打断 会清除 打断标记
public static void main(String[] args) throws InterruptedException {
test3();
}
private static void test3() throws InterruptedException {
Thread t1 = new Thread(() -> {
log.debug("park...");
LockSupport.park();
log.debug("unpark...");
}, "t1");
t1.start();
TimeUnit.SECONDS.sleep(2);
t1.interrupt();
log.debug("打断状态:{}", t1.isInterrupted());
log.debug("打断状态:{}", t1.interrupted());
}
运行结果:
23:58:54.218 c.Thread11: [t1] - park...
23:58:56.186 c.Thread11: [t1] - unpark...
23:58:56.186 c.Thread11: [main] - 打断状态:true
23:58:56.189 c.Thread11: [main] - 打断状态:false