【发布时间】:2015-09-06 19:13:47
【问题描述】:
在我的 Java 项目中,我希望每分钟定期做一些事情。调查说这是用
Executors.newScheduledThreadPool(1);
和
scheduler.scheduleAtFixedRate(runnable, 0, interval, MINUTES);
到目前为止,一切都很好。 执行的任务可能需要比我的间隔长度更多的时间。在这种情况下,新任务应该等待。我以为我是通过将 threadPoolSize 设置为 1 来做到这一点的,但它不起作用。当我的任务需要很长时间并且由于间隔时间结束而应该执行下一个任务时,它只是执行。
谁能告诉我如何让新任务等待之前的任务终止?
【问题讨论】:
-
请提供一个 mcve。
-
如果你需要一个线程,那么你不需要线程池。
-
@user5266804
ScheduledExecutorService不仅仅是一个线程池。就此而言,只有一个工作人员的线程池不仅仅是一个裸线程。他们有做有用事情的方法,你不必(重新)编写它们。重新实现库免费提供的东西是愚蠢的。
标签: java multithreading