在Java中停止线程?

我正在编写一段连接到服务器的代码,使用该连接生成一堆线程并执行一堆“东西”。

在某些情况下,连接失败,我需要停止一切,并从头开始使用新对象。

我想在对象之后清理但是在线程上调用thread.stop,但是这个方法似乎已被弃用了。

这样做的推荐替代方案是什么? 我应该为每个线程编写自己的清理和退出方法吗? 将线程设置为null? 或者是其他东西?

看这里 :

在HowToStopAThread中停止线程的建议方法

假设你的线程在你的控制之下是合理的 – 即他们没有调用任何可能在没有代码执行的情况下永远等待的东西 – 我会用一个简单的(但是线程安全的 – 使用volatile!)标志来关闭它。

有关C#中的示例,请参阅此文章 – Java等效应该很容易解决。 在线程下一次等待之前调用interrupt不会产生任何影响,并且stop会使您的应用程序处于难以预测的状态。 尽可能采用干净,有序的停机方式。

有一个非常相似主题的问题:

如何在java中以快速而干净的方式中止线程

如果Thread.interrupted()返回true,请使用your_thread.interrupt并检查线程。 如果是这样,请正确关闭您的线程。

我使用了这个非常简单的示例模式。 它似乎工作,易于理解和实施。

 private Thread m_CleanupThread = null; public void threadCleanUp(){ m_CleanupThread = new Thread(this); m_CleanupThread.Start(); } 

该线程将终止,垃圾收集器将完成剩下的工作。