有没有创建时间线程的JavaAPI
可能重复:有没有创建时间线程的JavaAPI,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,可能重复: (某种类型的线程)可以监视特定任务所花费的时间,因此如果时间达到特定限制,它将重试该线程。如果您只需要非常粗略的估计,则可以创建一个线程,将其休眠多长时间,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其run()命令的主体如下: Thread.sleep(5000); //5 seconds while ( needToRestart() ) { restart(); Thread.sleep(5000); } 这将检查您的任务是否需要每5秒重新启动一次,如
(某种类型的线程)可以监视特定任务所花费的时间,因此如果时间达到特定限制,它将重试该线程。如果您只需要非常粗略的估计,则可以创建一个线程,将其休眠多长时间,然后检查是否需要重新启动任务。例如,您可以创建一个线程,其run()命令的主体如下:
Thread.sleep(5000); //5 seconds
while ( needToRestart() )
{
restart();
Thread.sleep(5000);
}
这将检查您的任务是否需要每5秒重新启动一次,如有必要,也会进行检查。需要注意的是,Thread.sleep在计时方面并不准确,但如果准确的时间量并不重要,那么这是一种廉价的解决方案。如果为任务定义starttime属性。您始终可以启动线程,并在run()方法中监视您的任务。从某种意义上说,它将测量currentTime-startTime(可用于task对象),并检查差异是否达到阈值 这样试试 1。使用java.util.concurrent中的
CountDownLatch
2.倒计时锁存器cdt=新倒计时锁存器(10)代码>
这将完成你的10项任务,每次完成一项任务时,计数将下降1。
使用countDown()
方法在任务完成时减少计数。
使用await()
方法允许在完成10个任务后执行流
3。运行另一个线程,该线程监视CountDownLatch
完成任务所用的时间
任务
4.假设时间超过您想要的时间,然后重新初始化倒计时锁存器
请给我举个例子,一个java代码可以实现这一点。您的意思是java.util.Timer
?让我们说,有一个作业,该作业创建了10个任务。现在的问题是监视这10个任务,看看是否有任务卡住了,即如果某个特定任务花费>=2小时,然后取消它并重试。提供一个java示例代码来完成上述任务。让我们说,有一个作业,该作业创建了10个任务。现在的问题是监视这10个任务,看看是否有任务卡住了,即某个特定任务花费>=2小时,然后取消它并重试。提供一个java示例代码来完成上述任务。猜怎么着?上述方法可以做到这一点。只需将Vamsi Mohan Jayanti所说的与上述代码结合起来,并监视线程循环中的开始时间和当前时间之间的差异。如果合适,您可以对十项任务中的每一项进行轮询。stackoverflow的目的不是让我们为您编写代码,而是让您通过瓶颈。如果您对我们的答案有特定的问题,请告诉我们。不过,在这一点上,java.util.Timer对于如此长的任务会工作得更好。