ScheduledExecutorService
全部标签 我正在安排一个任务:ScheduledExecutorServicedataService=Executors.newScheduledThreadPool(1);FuturedataTimerHandle=dataService.scheduleAtFixedRate(runnable,100,freq,TimeUnit.MILLISECONDS);这很好用,没有缺陷。但是,当某个标志因用户操作而变为true时,任务不再需要定期执行,只需执行一次即可。然后,我尝试取消任务并仅提交一次,如下所示:if(!dynamicUpdate){dataTimerHandle.cancel(tru
我希望任务在1分钟的间隔后永远运行。为了完成我在中写下的任务publicvoidpoll(){ScheduledExecutorServiceexecutorService=Executors.newScheduledThreadPool(1);ScheduledFuturefiles=executorService.scheduleAtFixedRate(newRunnable(){@Overridepublicvoidrun(){Stringpath="/Desktop/PNL/Test";ListfilesPaths=newArrayList();Filefolder=newFi
我有一个singleThreadExecutor,我正在用这样的scheduledFixedDelay提供一个RunnableRunnableperiodic=newRunnable(){...}ScheduledExecutorServiceexecutor=Executors.newSingleThreadScheduledExecutor();executor.scheduleWithFixedDelay(periodic,1,1,TimeUnit.MINUTES);它将在两次执行之间延迟1分钟运行。问题是,有时我需要“按需”运行它。这可能吗?我考虑过取消执行,运行Runnabl
我刚刚开始研究Java中的Futures和ScheduledExecutorService,我想知道为什么我的Callable没有按照我指定的时间表运行。在此示例代码中,可调用对象运行一次,但应用程序永远不会完成,任务也不会再次运行,这是我预期会发生的情况(我确定问题出在我的预期范围内)。Runnables工作正常;Callables似乎永远阻塞,但我不确定为什么......我错过了什么?谢谢!publicclassExecutorExample{/***@paramargs*@throwsExecutionException*@throwsInterruptedException*/
创建一个每15分钟运行一次以从数据库中获取数据的后台线程的最佳方法是什么?下面是我拥有的代码,我猜它可以在生产环境中正常工作,但是还有比我拥有的更好的方法或我应该注意的事情吗?privatestaticvoidcheckDatabaseEveryXMinutes(){newThread(){publicvoidrun(){while(true){try{Thread.sleep(checkingAfterEveryXMinutes);getDataFromDatabase();}catch(InterruptedExceptionex){//loghere}catch(Exceptio
考虑我们有一个预定的执行程序服务:ScheduledExecutorServicethreadPool=Executors.newScheduledThreadPool(...);对于某些逻辑,我们希望重试任务执行。以下方法对我来说似乎很奇怪,但我不明白为什么:threadPool.submit(newRunnable(){@Overridepublicvoidrun(){//...if(needToBeScheduled()){threadPool.schedule(this,delay,TimeUnit.MINUTES);}elseif(needToBeResubmitted())
所以我想弄清楚如何创建一个计时器,我遇到了这个:usingScheduledExecutorServicetostartandstoptimer他们的示例似乎运行良好。我只是想知道我是否正确使用了它:publicclassTimerTest{privateScheduledExecutorServicees=null;privatebooleantimeIsUp=false;privateScheduledFuturefutureHandler=null;privateTimeKeepertimeKeeper=null;privateStringsubject="";privatein
我有一个关于scheduleAtFixedRate()的问题Java6中ScheduledExecutorService的方法。[编辑:1.6的Javadoc比1.5的更完整。请参阅下面的评论]鉴于:ScheduledExecutorService是在池中使用N=1个线程构建的固定速率是T秒的周期没有初始延迟在这种情况下会发生什么(在实时意义上,时间并不是绝对的):在时间T,服务启动一个Runnable任务,“task1”在时间2T,task1尚未完成,服务计划启动服务是否保证执行以下任何操作?(a)在2T,启动一个Runnable任务,“task2”(召回N=1)(b)阻塞直到tas
我需要在我的网络应用程序(tomcat上的jsp)中执行定期操作(调用java方法)。我怎样才能做到这一点?Java守护进程或其他解决方案? 最佳答案 你可以使用ScheduledExecutorService用于定期执行任务。但是,如果您需要更复杂的类似cron的调度,请查看Quartz.特别是我建议使用QuartzinconjunctionwithSpring如果你走这条路,因为它提供了一个更好的API并允许你在配置中控制你的作业触发。ScheduledExecutorService示例(取自Javadoc)importstat
我是ExecutorService的新手,想知道为什么以下代码可以正确打印“1015”,即使我只创建了一个线程来处理超时?为什么我可以多次调用schedule而不会在单个线程执行器上取消先前的任务?importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassTestExecutorServiceimplementsRunnable{publicstaticScheduledEx