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
(某种线程)可以监视特定任务所花费的时间,因此如果时间达到特定限制,它会重试它
-
给我一个例子,一个执行此操作的java代码
-
你的意思是java.util.Timer?
试试这种方式....
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(可用于任务对象)并检查差异是否已达到阈值。
-
让我们说,有一个工作,那个工作创造了10个任务。现在的问题是监控这10个任务,看看是否有任务卡住了,即特定任务需要> = 2小时,然后取消它并重试它。提供java中用于执行上述操作的示例代码。
如果您只需要非常粗略的估计,您可以创建一个线程,让它在您需要的时间内进入休眠状态,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其run()命令具有如下所示的主体:
1 2 3 4 5 6
| Thread. sleep(5000); //5 seconds
while ( needToRestart () )
{
restart ();
Thread. sleep(5000);
} |
这将检查您的任务是否需要每5秒重新启动一次,如有必要。重要的是要注意Thread.sleep在计时方面不准确,但如果准确的时间量不重要,这是一个便宜的解决方案。
-
让我们说,有一个工作,那个工作创造了10个任务。现在的问题是监控这10个任务,看看是否有任务卡住了,即特定任务需要> = 2小时,然后取消它并重试它。提供java中用于执行上述操作的示例代码。
-
你猜怎么着?以上都会这样做。只需将Vamsi Mohan Jayanti所说的内容与上面的代码结合起来,并监控线程循环内的开始时间和当前时间之间的差异。在适当的时候,您可以轮询您的十个任务中的每一个。 stackoverflow的目的不是让我们为你编写代码,只是为了让你解决瓶颈问题。如果您对我们的答案有具体问题,请告诉我们。
-
虽然,在这一点上,java.util.Timer将更好地完成这么长的任务。
-
谢谢您的帮助..:)