java - 强制停止线程

标签 java multithreading

假设我有以下一段由线程运行的代码:

public void logic()
{
   //Step1
   //Step2
   //Step3
   //Step4
   ...
   ...
   //Stepn
}

此方法中没有任何地方调用可中断方法(例如 wait、sleep、join)。并且某些步骤需要花费大量时间来执行。原因可能不是阻塞操作(例如(socket.read 或文件的读取方法))。我想确保如果整个逻辑方法在 M 秒内没有执行,那么线程应该被杀死。实现这一目标的最佳方法是什么?

最佳答案

你说“在这个方法中没有调用可中断方法(如wait、sleep、join)”,但中断并不限于阻塞方法;如果你检查的话,任何方法都可以响应中断。

logic 方法的每个步骤之间添加类似的内容:

if (Thread.currentThread().interrupted()) {
    throw new InterruptedException();
}

(您可能希望将其实际放入某个静态 allowInterruption 方法中,然后在每个步骤后调用该方法。)

关于java - 强制停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964203/

相关文章:

java - PHP ImageJPEG 方法,但适用于 Java

java - 需要了解资源位置和变量值设置中的类路径

java - Apache POI 是否支持对单词进行两次签名?

客户端/服务器 pthreads 程序未在 Valgrind 下执行。正常运行

c# - WebAPI线程

c# - CancellationToken 阻塞线程执行

java - 如何访问 JSONObject 子字段?

java - 提高 JTextField 的性能

c# - 使用 STA 和 COM 的 VSTO 后台线程

java - 如果线程死了(但进程还活着),事件是否会被确认