如果我对Thread.interrupt()的调用无法正常工作,如何正确停止线程? [重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      
已邀请:
如果实际情况合适,请生成另一个进程并将其视为工作单元,而不是线程。进程终止是更具确定性的,尽管将进程用于过去的线程工作可能对您的情况而言过于沉重。     
为什么在等待某种条件时不尝试使用sleep(长时间超时),如果没有成功,您可以简单地从线程中“返回”? 可能您的线程正在ѭ0中运行, 如果是,则可以将此变量设置为volatile,而线程控制器将其设置为false。 将ѭ1像ѭ2一样,它可以工作,但是当您遇到一些使线程停止/ vm退出的错误时,将很难找到它。     
比使用Thread.stop()更好的唯一解决方案是在单独的线程中使用该库,您可以杀死该线程以停止它。     
您可能要查找正在运行的函数的不同句柄,例如,如果其IO可以尝试关闭任何打开的连接/流。如果您对这个库感到困惑(IE无法找到具有更好中断机制的库),则Thread.stop()是停止线程的唯一方法。     
从Java 4开始不推荐使用Thread.stop()。 Interruptibleclasses具有close()方法,另一个线程可以通过close()方法异步调用它。     

要回复问题请先登录注册