相关疑难解决方法(0)

如何超时一个线程

我想在一段固定的时间内运行一个线程.如果它没有在那段时间内完成,我想杀死它,抛出一些异常,或以某种方式处理它.怎么做到呢?

我从这个线程 中发现的一种方法是在Thread的run()方法中使用TimerTask.

有没有更好的解决方案呢?

 
编辑:添加赏金,因为我需要一个更清晰的答案.下面给出的ExecutorService代码没有解决我的问题.为什么我应该在执行后睡觉()(一些代码 - 我没有处理这段代码)?如果代码完成并且sleep()被中断,那怎么可能是timeOut?

需要执行的任务不在我的控制范围内.它可以是任何一段代码.问题是这段代码可能会遇到无限循环.我不希望这种情况发生.所以,我只想在一个单独的线程中运行该任务.父线程必须等到该线程完成并且需要知道任务的状态(即它是否超时或发生了一些异常或者是否成功).如果任务进入无限循环,我的父线程会无限期地等待,这不是一个理想的情况.

java multithreading timeout timer

246
推荐指数
7
解决办法
23万
查看次数

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

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

java multithreading

32
推荐指数
4
解决办法
6万
查看次数

如何在Java中的一段时间后停止执行?

在代码中,变量计时器将指定结束while循环的持续时间,例如60秒.

   while(timer) {
    //run
    //terminate after 60 sec
   }
Run Code Online (Sandbox Code Playgroud)

java time

23
推荐指数
3
解决办法
9万
查看次数

标签 统计

java ×3

multithreading ×2

time ×1

timeout ×1

timer ×1