关于多线程:是否有任何创建时间线程的java api

Is there any java api, that creates a time thread

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to timeout a thread
stop a thread in java after a given time - doesn't work

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


试试这种方式....

1.使用java.util.concurrent中的CountDownLatch

2. CountDownLatch cdt = new CountDownLatch(10);

这将执行您的10个任务,每次完成任务时,计数减少1。
完成任务时,使用countDown()方法减少计数。
使用await()方法允许在完成10个任务后执行流程。

3.运行另一个线程,监视CountDownLatch完成的时间
任务。

4.假设时间超过了你想要的时间,那么Re-initialize the CountDownLatch


如果为任务定义starttime属性。你总是可以启动一个线程,在run()方法中它会监视你的任务。在某种意义上,它将测量currentTime - startTime(可用于任务对象)并检查差异是否已达到阈值。


如果您只需要非常粗略的估计,您可以创建一个线程,让它在您需要的时间内进入休眠状态,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其run()命令具有如下所示的主体:

1
2
3
4
5
6
Thread.sleep(5000); //5 seconds
while ( needToRestart() )
{
  restart();
  Thread.sleep(5000);
}

这将检查您的任务是否需要每5秒重新启动一次,如有必要。重要的是要注意Thread.sleep在计时方面不准确,但如果准确的时间量不重要,这是一个便宜的解决方案。