繁体   English   中英

java:停止安全线程; 不使用while和boolean标志

[英]java : stop safety a thread; not using while and boolean flag

我有一个线程可以执行一次任务。 如果它无法在适当的时候这样做,我想停止它。 我怎样才能做到这一点? 我之前见过的所有方法都使用while循环和执行多次任务的标志。 但是我的任务不是那样。

谢谢你们。

停止任务的唯一干净方法是中断它(或设置其他标志),这会使线程正常停止。 如果您的代码中没有外部循环,则可以在可以安全地中断工作流程的各个关键点进行检查。 对于大型代码库而言,这可能很乏味,但这是最佳方法。

如果您有一个库,则无法控制您可以使用Thread.stop(),但是这会使您的应用程序处于未定义状态。 它不会像这样杀死线程,但是会触发ThreadDeath错误,该错误将释放堆栈并最终调用finally块等。问题是它将发生在有效的随机代码行中(甚至是一行代码的一半)可以忽略ThreadDeath错误,具体取决于代码的编写方式。

解决此问题的唯一方法是在另一个进程中运行不受信任的代码,然后在花费太长时间的情况下终止该进程。 这可能会留下临时文件,但这是一个更安全的选择。

使用java.util.TimerTask类-用于计划任务一次或由Timer重复执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM