Java中interrupted()与isInterrupted()的区别
- 1、interrupted()方法
- 1.1 示例
- 2、isInterrupted() 方法
- 2.1 示例
- 3、总结
💖The Begin💖点点关注,收藏不迷路💖
|
在Java多线程编程中,interrupted()
和isInterrupted()
方法用于检查线程的中断状态,但它们之间存在关键的区别。
1、interrupted()方法
- 作用:检查并清除当前线程的中断状态。
- 返回值:如果线程的中断状态为
true
,则返回true
并清除中断状态;如果为false
,则返回false
。 - 使用场景:当你需要立即响应中断请求,并在处理完中断逻辑后清除中断状态时使用。
1.1 示例
Thread thread = new Thread(() -> {
while (!Thread.interrupted()) {
// 模拟工作
}
System.out.println("线程已中断");
});
thread.start();
thread.interrupt(); // 触发中断
// 注意:此时线程的中断状态已被interrupted()清除
2、isInterrupted() 方法
- 作用:检查调用该方法的线程的中断状态,但不会清除这个状态。
- 返回值:如果线程的中断状态为true,则返回true;如果为false,则返回false。
- 使用场景::当你需要频繁检查中断状态但不希望清除它,或者检查其他线程的中断状态时使用。
2.1 示例
Thread thread = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
// 模拟工作
}
System.out.println("线程已中断");
});
thread.start();
thread.interrupt(); // 触发中断
// 线程的中断状态保持为true,直到被清除或线程结束
3、总结
1、interrupted():检查并清除当前线程的中断状态。
2、isInterrupted():检查当前线程的中断状态但不清除。
💖The End💖点点关注,收藏不迷路💖
|