可能重复:
How to timeout a thread
stop a thread in java after a given time - doesn't work
(某种线程)可以监视特定任务所花费的时间,因此如果时间达到特定限制,它会重试它
答案 0 :(得分:1)
以这种方式试试....
1。使用java.util.concurrent中的CountDownLatch
。
2。 CountDownLatch cdt = new CountDownLatch(10);
这将执行您的10项任务,每次完成任务时计数减少1 。
完成任务时,使用countDown()
方法减少计数。
使用await()
方法可以在完成10个任务后执行流程。
3. 运行另一个线程,监控CountDownLatch
完成的时间
任务。
4. 假设时间超过了您想要的时间,那么Re-initialize the CountDownLatch
答案 1 :(得分:0)
如果您只需要非常粗略的估计,您可以创建一个线程,让它在您需要的时间内进入休眠状态,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其run()命令具有如下所示的主体:
Thread.sleep(5000); //5 seconds
while ( needToRestart() )
{
restart();
Thread.sleep(5000);
}
这将检查您的任务是否需要每5秒重新启动一次,如有必要。重要的是要注意Thread.sleep 不准确用于计时目的,但如果确切的时间量不重要,这是一个便宜的解决方案。
答案 2 :(得分:0)
如果为任务定义starttime属性。你总是可以启动一个线程,在run()方法中它会监视你的任务。在某种意义上,它将测量currentTime - startTime(可用于任务对象)并检查差异是否已达到阈值。