// Java 线程中断示例代码
public class InterruptExample {
public static void main(String[] args) throws InterruptedException {
// 创建一个新线程
Thread thread = new Thread(() -> {
try {
// 线程执行一些耗时任务
for (int i = 0; i < 10; i++) {
System.out.println("Task is running...");
// 检查线程是否被中断
if (Thread.currentThread().isInterrupted()) {
System.out.println("Thread is interrupted, stopping...");
return;
}
// 模拟耗时操作
Thread.sleep(1000);
}
} catch (InterruptedException e) {
// 捕获中断异常并设置中断标志
System.out.println("Thread was interrupted during sleep");
Thread.currentThread().interrupt(); // 恢复中断状态
}
});
// 启动线程
thread.start();
// 主线程等待2秒后中断子线程
Thread.sleep(2000);
System.out.println("Main thread is interrupting the worker thread...");
thread.interrupt();
}
}
Thread.currentThread().isInterrupted() 方法来检查线程是否已经被中断。如果线程被中断,则提前退出循环。InterruptedException:当线程在 sleep 或其他阻塞方法中被中断时,会抛出 InterruptedException 异常。我们捕获这个异常,并通过调用 Thread.currentThread().interrupt() 来恢复中断状态,确保中断标志不会丢失。thread.interrupt() 来中断子线程。这个例子展示了如何正确地使用 Java 的线程中断机制来安全地中止正在运行的线程。
下一篇:java 不等于
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站