Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有创建时间线程的JavaAPI_Java_Multithreading_Thread Safety - Fatal编程技术网

有没有创建时间线程的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对于如此长的任务会工作得更好。