Thread.stop() 的 Java 文档听起来好像如果您调用 Thread.stop(),世界就会终结。
已弃用。这种方法本质上是不安全的。停止线程
Thread.stop 导致它解锁所有已锁定的监视器
(作为未经检查的 ThreadDeath 异常的自然结果
向上传播堆栈)。如果之前受保护的任何对象
这些监视器处于不一致的状态,损坏的物体
对其他线程可见,可能导致任意
行为。 stop 的许多用法应该被替换为简单的代码
修改一些变量以指示目标线程应该停止
跑步。目标线程应该定期检查这个变量,并且
如果变量按顺序从其 run 方法返回
表示要停止运行。如果目标线程等待
长时间(例如,在条件变量上),中断
应该使用方法来中断等待。有关更多信息,请参阅
为什么 Thread.stop、Thread.suspend 和 Thread.resume 被弃用?
例如,如果我在第 3 方、闭源库中运行一个方法,并且我需要保证它在 5 分钟或更短的时间内结束,还有其他方法吗?使用 Thread.stop() 的实际后果是什么?如何确定它们是否发生?
Never!
在任何情况下都不应使用Thread.stop()
.
如果您认为需要致电Thread.stop()
不!这会是错误的。
Thread.stop()
在任何情况下都不应该被调用。
请不要打电话Thread.stop()
- 即使你受到死亡威胁。
我将此答案捐赠给community wiki
请其他人和我一起谴责那些异教徒的召唤罪Thread.stop()
编辑这个答案并添加你的祈祷,凡人不应该呼唤Thread.stop()
.
如果您确实希望进程在 5 分钟后被终止 - 使用Process http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html那可以是被摧毁 http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#destroy%28%29。这将保护主 JVM 免受使用以下命令终止线程时可能发生的任何潜在损坏:Thread.stop()
。但是,这可能会使文件处于损坏状态,如果子进程Process
正处于 I/O 中间。防御这种情况的一种方法是使Process
可以回滚正在进行的事务的数据库客户端。
一般来说,不合作地终止某事and安全是非常非常困难的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)