目录
在 Java 中,安全地停止线程是一个常见的面试问题。使用不当的方法停止线程可能会导致资源未及时释放、泄漏问题或数据库状态不一致等情况。
一般建议使用标志位来安全地停止线程,千万不要使用像thread.stop这样过时且不安全的方法。因为强制停止线程可能会引发各种问题。
如果线程中有阻塞操作,可以通过线程的中断机制来打断阻塞操作。比如使用interrupt方法。同时,标志位一般建议用volatile修饰,以保证变量在多线程之间的可见性。
以下是一个示例代码:
class WorkerThread extends Thread {
private volatile boolean running = true;
@Override
public void run() {
while (running &&!isInterrupted()) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
interrupt();
}
}
}
public void stopThread() {
running = false;
interrupt();
}
}
在使用这个线程类时,可以先初始化线程,然后调用start方法开始运行。如果想要停止线程,不能使用不安全的stop方法,而是调用线程的stopThread方法。这个方法会将标志位设置为false,并且调用interrupt方法打断可能的阻塞操作,从而安全地停止线程。

8240

被折叠的 条评论
为什么被折叠?



