private volatile boolean stop = false;
@Test
public void testInterrupt2() throws InterruptedException {
// 线程1 数值累加 休眠1秒 忽略中断
AtomicInteger i = new AtomicInteger();
Thread thread1 = new Thread(() -> {
while (/*!stop && */!Thread.currentThread().isInterrupted()) {
i.getAndIncrement();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
System.out.println("thread1中断异常处理...");
Thread.interrupted();
}
}
});
thread1.start();
// 线程2 中断线程1 计数 休眠1秒
Thread thread2 = new Thread(() -> {
while (!stop && !Thread.currentThread().isInterrupted()) {
thread1.interrupt();
System.out.println(i.get());
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
System.out.println("thread2中断异常处理...");
}
}
});
thread2.start();
TimeUnit.SECONDS.sleep(5);
stop = true; // 为什么thread1停止执行了?
}
为什么thread1停止执行了???
为什么thread1停止执行了???
最新推荐文章于 2024-07-31 16:18:35 发布