我想立即停止Java线程,但是当我尝试线程停止之前总是需要一些时间。 有没有一种强制Java线程立即停止的好方法?有没有一种强制停止Java线程的好方法?
回答
运行线程无法使用Thread.Interrupt
停止,只能使用Thread.Interrupt
停止等待或阻塞线程。但使用共享变量来表示它应该停止正在执行的操作。线程应定期检查变量(例如:使用while循环)并按顺序退出。
private boolean isExit= false;
public void beforeExit() {
isExit= true;
}
public void run() {
while (!isExit) {
}
}
没有什么好的方法来立即停止线程。
有
Thread.stop()
,但它是危险的,不推荐使用。不要使用它,除非:你完全明白的问题,
你有彻底分析你的代码,并确定该问题不适用和/或风险是可以接受的。
有
Thread.interrupt()
,但不保证线程会迅速停止,甚至都停止。有写入线程定期检查标志的方法,但是如果标志没有经常检查(意外或通过设计),则线程不会很快停止。
FWIW,标志和interrupt()
方法在本质上是相同的。在这两种情况下,期望中断的线程都需要定期检查;例如通过调用interrupted()
或isInterrupted()
或通过检查一个标志。区别在于interrupt()
机制将在代码正在等待notify()
或阻塞和IO操作时起作用。因此,并且因为interrupt
是一种独立于应用程序的方式,所以应优先使用它,而不是应用程序特定的机制。
此外,如果您想使用使用Java基础结构的标志方法,则可以使用'Thread.currentThread.isInterrupted'。 – sixtyfootersdude
@sixtyfootersdude - 我相信我已经说过了。 –
不要在任何情况下使用Thread.stop - 如果你问这个问题,那么你不明白Java线程模型足以安全地使用它。
的细节,为好奇,在这里:http://download.java.net/jdk7/archive/b131/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
如果你在Java并发真的够好,那么你就会明白为什么你不应该使用它,即使它的内完全安全的自己的代码,它会让你的代码被其他人污染和无法使用。相反,您最终可能会使用布尔变量技巧或某种其他模式来告诉线程何时完成并退出。
不要使用Thread.stop。永远。
我几乎允许我在链接上使用Thread.stop()thx! –
有一个好办法安全(和快速)强行停止一个线程:
System.exit(0)
不幸的是,这种具有杀灭所有其他线程的副作用。
- 1. 好的方法来终止一个线程(没有Thread.Abort)
- 2. MaualResetEventSlim没有停止线程
- 3. Java:停止线程化TCP服务器的好方法?
- 4. 如何在没有stop()方法的情况下停止线程?
- 5. 有没有一种方法来比较每个线程的变量java
- 6. Java多线程停止方法
- 7. 寻找一种方法来停止/杀死一个线程
- 8. 有没有一种方法来验证JavaScript中的窗体来停止onSubmit()java方法解雇?
- 9. 如何停止从adb的android应用程序没有强制停止或根?
- 10. 有没有办法无意中停止Executor的线程?
- 11. 有没有一种很好的方法来防止重新定义jQuery?
- 12. 有没有更好的方法来编写这种方法?
- 13. 有没有更好的方法来测试这种方法?
- 14. 有没有一种很好的方法来分类wp
- 15. 有没有一种验证jQuery代码的好方法?
- 16. CoreData - 有没有一种很好的方法来放置物品?
- 17. 有没有一种使用url_for ActiveResource的好方法?
- 18. 有没有一种好的方法(PHP类)来访问Gmail Contacs?
- 19. Java中有没有一种方法可以从控制台调用方法?
- 20. Tomcat抱怨线程没有停止
- 21. 有没有办法立即停止线程?
- 22. Linux:有没有一种方法可以在不停止/暂停进程的情况下使用ptrace(SIGSTOP)?
- 23. 通过滚动强制停止tableview时调用哪种方法?
- 24. 有没有一种很好的方法来强制C中的类型不兼容?
- 25. 有没有一种从mathml或latex中绘制图形的好方法?
- 26. 杀死所有进程,强制所有进程停止
- 27. 有没有一种获得开放泛型方法的MethodInfo的好方法?
- 28. 有没有办法强制一些方法的类没有指定参数?
- 29. java程序停止没有错误
- 30. 有没有一种方法可以强制执行特定方法签名的方法?
取决于要求。那么,你可以立即停止使用中断() –
@Mohamed Saligh:我使用相同的。但花时间停止线程。我可以在我的服务器控制台上看到该进程。 –
请在下面寻找答案.. –