有没有创建时间线程的java api

时间:2012-08-20 05:34:53

标签: java multithreading thread-safety

  

可能重复:
  How to timeout a thread
  stop a thread in java after a given time - doesn't work

(某种线程)可以监视特定任务所花费的时间,因此如果时间达到特定限制,它会重试它

3 个答案:

答案 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(可用于任务对象)并检查差异是否已达到阈值。