-2

可能重复:
如何超时
线程在给定时间后停止java中的线程 - 不起作用

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

4

3 回答 3

1

试试这个方法......

1.CountDownLatch从 java.util.concurrent使用。

2. CountDownLatch cdt = new CountDownLatch(10);

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

3.运行另一个线程来监控CountDownLatch完成任务所用的时间。

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

于 2012-08-20T06:23:07.353 回答
0

如果您只需要一个非常粗略的估计,您可以创建一个线程,让它休眠多久,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其 run() 命令的主体如下:

Thread.sleep(5000); //5 seconds
while ( needToRestart() )
{
  restart();
  Thread.sleep(5000);
}

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

于 2012-08-20T05:41:36.200 回答
0

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

于 2012-08-20T05:43:58.167 回答