Java 中断机制,
分享于 点击 7065 次 点评:254
Java 中断机制,
关键方法
public void interrupt()
将调用线程的中断状态设置为 true
public boolean isInterrupted()
返回调用线程的中断状态
public static boolean interrupted()
1. 返回调用线程的中断状态
2. 将调用线程的中断状态设置为 false
知识储备
Demo
非阻塞线程
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println("!");
}
}
});
t1.start();
// 一段时间后
t1.interrupt();
由于没有监听中断标志,线程 t1 未被中断。
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("!");
}
}
});
t1.start();
// 一段时间后
t1.interrupt();
由于监听了中断标志,线程 t1 被中断。
阻塞线程
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("!");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println(".");
}
}
});
t1.start();
// 一段时间后
t1.interrupt();
由于线程进入了阻塞状态,线程 t1 被中断。
特殊情况
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// 参考知识储备2,这里需要手动将该线程的中断状态设置为 true
Thread.currentThread().interrupt();
}
}
}
});
t1.start();
// 一段时间后
t1.interrupt();
当监听与阻塞组合使用时,要注意在 catch() 中手动将该线程的中断状态设置为 true。
相关文章
- 暂无相关文章
用户点评