我想在一段固定的时间内运行一个线程.如果它没有在那段时间内完成,我想杀死它,抛出一些异常,或以某种方式处理它.怎么做到呢?
我从这个线程 中发现的一种方法是在Thread的run()方法中使用TimerTask.
有没有更好的解决方案呢?
编辑:添加赏金,因为我需要一个更清晰的答案.下面给出的ExecutorService代码没有解决我的问题.为什么我应该在执行后睡觉()(一些代码 - 我没有处理这段代码)?如果代码完成并且sleep()被中断,那怎么可能是timeOut?
需要执行的任务不在我的控制范围内.它可以是任何一段代码.问题是这段代码可能会遇到无限循环.我不希望这种情况发生.所以,我只想在一个单独的线程中运行该任务.父线程必须等到该线程完成并且需要知道任务的状态(即它是否超时或发生了一些异常或者是否成功).如果任务进入无限循环,我的父线程会无限期地等待,这不是一个理想的情况.
我有一个while循环,我希望它在经过一段时间后退出.
例如:
while(condition and 10 sec has not passed){
}
Run Code Online (Sandbox Code Playgroud) 有没有办法可以轻松地在一段时间内进行for循环?(没有使用System.currentTimeMillis()自己测量时间?)
即我想在Java中做这样的事情:
int x = 0;
for( 2 minutes ) {
System.out.println(x++);
}
Run Code Online (Sandbox Code Playgroud)
谢谢