草庐IT

scheduledExecutorService

全部标签

java - 我首先做什么 - 取消 ScheduledFuture 或关闭 ScheduledExecutorService?

我的代码:ScheduledServiceExecutorservice=Executors.newSingleThreadScheduledExecutor();ScheduledFuturefuture=service.scheduleWithFixedDelay(runnable,1,1,TimeUnit.MILLISECONDS);//...//nowit'stimetoshutitalldownfuture.cancel(true);service.shutdown();我在这儿吗?也许我应该这样做:service.shutdown();future.cancel(true)

java - 为什么 ScheduledExecutorService.shutdown() 使用 100% 的 CPU?

我有以下简单的代码:packagemain;importjava.util.concurrent.*;publicclassMain{publicstaticvoidmain(String[]args)throwsInterruptedException{newMain();}publicMain()throwsInterruptedException{ScheduledExecutorServiceexecutor=Executors.newScheduledThreadPool(1);executor.schedule(newMyRunnable(),10,TimeUnit.SEC

java - 具有可变延迟的 ScheduledExecutorService

假设我有一个任务是从java.util.concurrent.BlockingQueue中提取元素并处理它们。publicvoidscheduleTask(intdelay,TimeUnittimeUnit){scheduledExecutorService.scheduleWithFixedDelay(newTask(queue),0,delay,timeUnit);}如果可以动态更改频率,我如何安排/重新安排任务?这个想法是获取数据更新流并将它们批量传播到GUI用户应该能够改变更新频率 最佳答案 使用schedule(Calla

java - ScheduledExecutorService 异常处理

我使用ScheduledExecutorService定期执行一个方法。p码:ScheduledExecutorServicescheduler=Executors.newSingleThreadScheduledExecutor();ScheduledFuturehandle=scheduler.scheduleWithFixedDelay(newRunnable(){publicvoidrun(){//Dobusinesslogic,mayExceptionoccurs}},1,10,TimeUnit.SECONDS);我的问题:如果run()抛出异常,如何继续调度?我应该tryc

java - 如何使用 ScheduledExecutorService 每天在特定时间运行特定任务?

我每天早上5点尝试执行某项任务。所以我决定为此使用ScheduledExecutorService但到目前为止,我已经看到了一些示例,这些示例显示了如何每隔几分钟运行一次任务。而且我找不到任何示例来说明如何在每天早上的特定时间(凌晨5点)运行任务并且还考虑到夏令时这一事实-下面是我的代码,每15分钟运行一次-publicclassScheduledTaskExample{privatefinalScheduledExecutorServicescheduler=Executors.newScheduledThreadPool(1);publicvoidstartScheduleTask

java - 如何在 Java 中进行延迟?

我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。while(true){if(i==3){i=0;}ceva[i].setSelected(true);//Ineedtowaithereceva[i].setSelected(false);//Ineedtowaitherei++;}我想构建一个步进音序器,但我是Java新手。有什么建议吗? 最佳答案 如果要暂停,请使用java.util.concurrent.TimeUnit:TimeUnit.SECONDS.sleep(1);睡一秒钟或TimeUnit.

java - 如何在 Java 中进行延迟?

我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。while(true){if(i==3){i=0;}ceva[i].setSelected(true);//Ineedtowaithereceva[i].setSelected(false);//Ineedtowaitherei++;}我想构建一个步进音序器,但我是Java新手。有什么建议吗? 最佳答案 如果要暂停,请使用java.util.concurrent.TimeUnit:TimeUnit.SECONDS.sleep(1);睡一秒钟或TimeUnit.

ScheduledExecutorService详解

ScheduledExecutorService有线程池的特性,也可以实现任务循环执行,可以看作是一个简单地定时任务组件,因为有线程池特性,所以任务之间可以多线程并发执行,互不影响,当任务来的时候,才会真正创建线程去执行我们在做一些普通定时循环任务时可以用它,比如定时刷新字典常量,只需要不断重复执行即可,这篇文章讲解一下它的用法以及注意事项,不涉及底层原理注意:我们都知道,在使用线程池的时候,如果我们的任务出现异常没有捕获,那么线程会销毁被回收,不会影响其他任务继续提交并执行,但是在这里,如果你的任务出现异常没有捕获,会导致后续的任务不再执行,所以一定要try...catch1.延迟不循环任务

ScheduledExecutorService详解

ScheduledExecutorService有线程池的特性,也可以实现任务循环执行,可以看作是一个简单地定时任务组件,因为有线程池特性,所以任务之间可以多线程并发执行,互不影响,当任务来的时候,才会真正创建线程去执行我们在做一些普通定时循环任务时可以用它,比如定时刷新字典常量,只需要不断重复执行即可,这篇文章讲解一下它的用法以及注意事项,不涉及底层原理注意:我们都知道,在使用线程池的时候,如果我们的任务出现异常没有捕获,那么线程会销毁被回收,不会影响其他任务继续提交并执行,但是在这里,如果你的任务出现异常没有捕获,会导致后续的任务不再执行,所以一定要try...catch1.延迟不循环任务