停止Java中的线程?

停止Java中的线程?,java,multithreading,Java,Multithreading,我正在编写一段连接到服务器的代码,使用该连接生成一组线程,并执行一组“工作” 在某些情况下,连接失败,我需要停止一切,从一个新对象开始 我想在对象之后进行清理,但在线程上调用了thread.stop,但该方法似乎已被弃用 建议的替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为空?还是别的什么 如果thread.interrupt()返回true,请使用_thread.interrupt并检入线程。如果是这样,请正确关闭线程。假设您的线程在您的合理控制下,也就是说,它们不会

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

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

我想在对象之后进行清理,但在线程上调用了thread.stop,但该方法似乎已被弃用


建议的替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为空?还是别的什么

如果thread.interrupt()返回true,请使用_thread.interrupt并检入线程。如果是这样,请正确关闭线程。

假设您的线程在您的合理控制下,也就是说,它们不会调用任何可能永远等待您的代码执行的东西,我会使用一个简单的(但线程安全-使用volatile!)标志将其关闭

参见C#中的一个例子——Java等价物应该很容易计算出来。调用
interrupt
在线程下一次等待之前不会有任何效果,
stop
会让你的应用处于难以预测的状态。如果可能,请选择干净有序的关机方式。

私有线程m_CleanupThread=null;
公共void threadCleanUp(){
m_CleanupThread=新线程(此线程);
m_CleanupThread.Start();
}
该线程将终止,垃圾回收器将完成其余工作