我正在写一段代码,连接到服务器产生一堆线程使用该连接,并做了一堆“东西”。在Java中停止线程?
有某些情况下,当连接失败,我需要停止一切从头开始一个新的对象开始。
我想清理对象之后但调用使用Thread.stop上线,但这种方法貌似过时。
这样做的建议替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为null?或者是其他东西?
我正在写一段代码,连接到服务器产生一堆线程使用该连接,并做了一堆“东西”。在Java中停止线程?
有某些情况下,当连接失败,我需要停止一切从头开始一个新的对象开始。
我想清理对象之后但调用使用Thread.stop上线,但这种方法貌似过时。
这样做的建议替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为null?或者是其他东西?
看吧:
使用your_thread.interrupt停止线程建议的方法,并检查您的线程,如果Thread.interrupted()返回true。如果是这样,请正确关闭你的线程。
假设你的线程是合理的控制之下 - 即他们没有任何调用它会潜在地等待永远没有你的代码执行 - 我将关闭它用一个简单的(但线程安全的 - 使用volatile!)旗。
在C#示例,请参阅this article - 相当于Java中的应该很容易找出。调用interrupt
将不会有任何效果,直到线程下一次等待,stop
可以让您的应用程序处于难以预测的状态。只要有可能,就去做一个干净而有序的关机。
有一个非常类似的话题的问题:
我用this非常简单的示例模板。它似乎工作,很容易理解和实施。
private Thread m_CleanupThread = null;
public void threadCleanUp(){
m_CleanupThread = new Thread(this);
m_CleanupThread.Start();
}
此线程将终止,垃圾回收器将完成剩下的工作。