Java 中如何停止一个线程?

· 约 3 分钟读完 · 第 103 / 274 章

推荐答案

在 Java 中,停止一个线程的推荐方法是使用 interrupt() 方法。通过调用线程的 interrupt() 方法,可以中断线程的执行,线程可以通过检查中断状态来决定是否停止执行。

本题详细解读

1. 使用 interrupt() 方法

interrupt() 方法是 Java 中推荐的中断线程的方式。它不会立即停止线程,而是设置线程的中断状态。线程可以通过检查 isInterrupted() 方法来检测中断状态,并决定是否停止执行。

2. 处理 InterruptedException

当线程处于 sleep()、wait() 或 join() 等阻塞状态时,调用 interrupt() 方法会抛出 InterruptedException。捕获到这个异常后,通常需要重新设置中断状态,以确保线程能够正确退出。

3. 为什么不能使用 stop() 方法

stop() 方法已经被废弃,因为它会强制终止线程,可能导致资源未释放或数据不一致的问题。使用 interrupt() 方法可以让线程有机会清理资源并安全退出。

4. 检查中断状态

在循环中,可以通过 Thread.currentThread().isInterrupted() 来检查中断状态。如果线程被中断,isInterrupted() 会返回 true,从而退出循环。

5. 重新设置中断状态

在捕获到 InterruptedException 后,通常需要调用 Thread.currentThread().interrupt() 来重新设置中断状态,以确保后续代码能够正确检测到中断。

通过这种方式,可以安全、优雅地停止一个线程的执行。