当前位置: 首页 > 面试题库 >

在Java中指定的时间限制后杀死线程

倪培
2023-03-14
问题内容

在Java中指定的时间限制后,有没有办法杀死子线程?编辑:此特定线程也可能在最坏的情况下被阻止(线程用于等待文件修改并在发生此事件之前被阻止),所以我不确定中断()是否会成功?


问题答案:

利用ExecutorService来执行Callable,签出你可以指定超时的方法。例如

ExecutorService executor = Executors.newSingleThreadExecutor();
executor.invokeAll(Arrays.asList(new Task()), 10, TimeUnit.MINUTES); // Timeout of 10 minutes.
executor.shutdown();

Task当然在这里实施Callable



 类似资料:
  • 问题内容: 如何java.lang.Thread用Java 杀死A ? 问题答案: 有关他们为何不赞成使用Sun的内容,请参见此主题。它详细介绍了为什么这是一种不好的方法,以及通常应该采取什么措施才能安全地停止线程。 他们建议的方式是使用共享变量作为标志,要求后台线程停止。然后可以由另一个请求线程终止的对象来设置此变量。

  • 问题内容: 我正在使用第三方库来处理大量数据集。该过程偶尔会陷入无限循环(或被阻塞- 不知道为什么并且无法进入代码)。我想在设定的时间后消除这个问题,然后继续处理下一个案件。一个简单的例子是: processData通常最多需要1秒。我想设置一个计时器,该计时器在10秒后杀死processData() 编辑我将不胜感激代码片段(我没有在使用Thread的过程中练习过)。执行器方法看起来很有用,但我

  • 问题内容: 我想在线程中运行一个进程(正在对一个大的数据库表进行迭代)。在线程运行时,我只希望程序等待。如果该线程花费的时间超过30秒,我想终止该线程并执行其他操作。通过杀死线程,我的意思是我希望它停止活动并优雅地释放资源。 我想这样做是通过最好的方式的和功能,以及。使用I,我可以让我的程序等待30秒等待线程完成,并且通过使用该函数,我可以确定线程是否完成了工作。如果尚未完成工作,则设置事件,并且

  • 我想使用执行器接口(使用Callable),以便启动一个线程(让我们称之为可调用线程),它将执行使用阻塞方法的工作。这意味着当主线程调用Future.cancel(true)(调用Thread.interrupt())时,可调用的线程可以抛出一个InterruptedExc0019。 我还希望我的可调用线程在代码的取消部分使用其他阻塞方法中断时正确终止。 在实现这一点时,我经历了以下行为:当我调用

  • 问题内容: 我有一个bash脚本,该脚本启动一个子进程,该子进程有时会崩溃(实际上是挂起),并且没有明显的原因(封闭源代码,因此我无能为力)。结果,我希望能够在给定的时间内启动此过程,并在给定的时间之后未成功返回的情况下将其终止。 有没有 简单 而 强大的 方法可以使用bash来实现这一目标? PS:告诉我这个问题是否更适合serverfault或超级用户。 问题答案: (如下所示: BASH常见

  • 我在java中创建Thread,我想杀死或销毁或退出它并再次重新启动相同的线程。有一些属性可以杀死或销毁线程,但现在已弃用。这可能是相同的线程代码 `任何帮助都将不胜感激