我遇到问题,我正在尝试在ScheduledExecutorService中执行一个Task,并且我正在使用以下命令执行任务:
updateTagDataHandle = scheduler.scheduleWithFixedDelay(updateTagDataRunnable, 500, 500, TimeUnit.MILLISECONDS);
并且在几次成功运行后停止。任务本身花了几秒钟我用println检查它没有错误就到任务结束了,我打印任何异常并且最后没有看到异常。我需要它继续无限次运行。
任何帮助将不胜感激
修改
我初始化任务调度程序的代码是:
scheduler = Executors.newScheduledThreadPool(1);
所以corePoolSize = 1所以只有一个线程处于活动状态,并且任务在线程上共享它。但是将threadPool设置为多个并没有帮助,而且似乎只有一个线程处于活动状态。
同样的问题: Executors Factory method newScheduledThreadPool always returns the same Thread pool
在这里:
Why doesn't ScheduledExecutorService spawn threads as needed?
任何帮助将不胜感激
编辑:
没有找到解决方案,因此使用了调度程序自定义线程创建:
scheduler = Executors.newScheduledThreadPool(7, new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
return new Thread(r);
}
});
答案 0 :(得分:0)
尝试将初始延迟更改为1000毫秒。
我在Android应用程序中尝试了相同的代码,这解决了问题。