停止Java中的线程?
我正在编写一段连接到服务器的代码,使用该连接生成一组线程,并执行一组“工作” 在某些情况下,连接失败,我需要停止一切,从一个新对象开始 我想在对象之后进行清理,但在线程上调用了thread.stop,但该方法似乎已被弃用停止Java中的线程?,java,multithreading,Java,Multithreading,我正在编写一段连接到服务器的代码,使用该连接生成一组线程,并执行一组“工作” 在某些情况下,连接失败,我需要停止一切,从一个新对象开始 我想在对象之后进行清理,但在线程上调用了thread.stop,但该方法似乎已被弃用 建议的替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为空?还是别的什么 如果thread.interrupt()返回true,请使用_thread.interrupt并检入线程。如果是这样,请正确关闭线程。假设您的线程在您的合理控制下,也就是说,它们不会
建议的替代方法是什么?我应该为每个线程编写自己的清理和退出方法吗?将线程设置为空?还是别的什么 如果thread.interrupt()返回true,请使用_thread.interrupt并检入线程。如果是这样,请正确关闭线程。假设您的线程在您的合理控制下,也就是说,它们不会调用任何可能永远等待您的代码执行的东西,我会使用一个简单的(但线程安全-使用volatile!)标志将其关闭 参见C#中的一个例子——Java等价物应该很容易计算出来。调用
interrupt
在线程下一次等待之前不会有任何效果,stop
会让你的应用处于难以预测的状态。如果可能,请选择干净有序的关机方式。私有线程m_CleanupThread=null;
公共void threadCleanUp(){
m_CleanupThread=新线程(此线程);
m_CleanupThread.Start();
}
该线程将终止,垃圾回收器将完成其余工作