在 Java 中使用多线程时,可能需要提前终止线程。为了保证正确执行并防止系统不稳定,“优雅地”停止线程至关重要。这涉及允许线程在结束执行之前完成任何关键操作。
问题:
您创建了一个执行时间过长的线程。尽管看起来尚未完成,但您希望优雅地停止线程。
解决方案:
实现此目的的首选方法是利用目标线程中的布尔变量run() 方法。从外部将此标志设置为 true 将向线程发出信号以正常终止。下面是一个例子:
class MyThread extends Thread { volatile boolean finished = false; public void stopMe() { finished = true; } @Override public void run() { while (!finished) { // Perform tasks } } }
避免 stop() 方法:
过去,存在 Thread.stop() 方法,但其使用强烈灰心。根据 Java 文档,此方法在执行时“解锁所有已锁定的监视器”,从而导致潜在的数据不一致和任意行为。
因此,使用如上所示的布尔标志可确保安全和受控线程终止机制。
以上是如何安全、优雅地停止 Java 线程?的详细内容。更多信息请关注PHP中文网其他相关文章!