java 中断线程调用哪个方法
时间: 2024-10-12 13:13:36 浏览: 27
Java中断线程的方法
在Java中,如果你想安全地中断一个线程而不是直接使用`Thread.stop()`(这已被标记为不推荐),你应该使用`Thread.interrupt()`方法[^1]。当你调用`interrupt()`时,它会设置线程的中断标志,如果线程正在阻塞(如在`wait()`, `sleep()`, 或同步锁上),那么它会被唤醒并检查中断状态。
另一种方式是使用`Thread.join()`方法[^2]来等待线程结束,但请注意,`join()`并不会中断线程,它只是阻塞当前线程直到目标线程完成。如果你希望优雅地处理可能的中断情况,可以在`join()`内部捕获`InterruptedException`。
这里有一个简单的示例:
```java
Thread thread1 = new Thread(() -> {
System.out.println("thread1启动了");
while (!Thread.currentThread().isInterrupted()) { // 检查中断标志
System.out.println("thread1循环中...");
}
System.out.println("thread1因中断而停止");
});
thread1.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
thread1.interrupt(); // 设置中断标志
}
System.out.println("主线程准备关闭thread1线程");
thread1.join(); // 等待thread1完成或被中断
System.out.println("主线程停止");
```
阅读全文