Java ScheduledExecutorService.scheduleWithFixedDelay启动新线程以执行任务,而无需等待第一个任务完成

问题描述 投票:0回答:1

我正在写一段代码,我需要定期安排Runnable。我使用ScheduledExecutorService.scheduleWithFixedDelay,初始延迟为0,延迟为2分钟。此SchedulerService中只有任务。我期待第一次执行任务将在第一次执行任务完成后2分钟开始。为了验证这一点,我在调试模式下启动了我的应用程序,并在Runnable Task的开头放置了一个断点。第一次执行在断点处停止,执行任务的线程进入挂起状态。令我惊讶的是,在第一次执行任务开始2分钟后,SchedulerService启动新线程以执行第二次执行任务。我期待除非第一次执行完成,否则ScheduledExecutorService.scheduleWithFixedDelay将不会启动第二次执行。请帮助我理解这种行为,因为这与Javadoc对此方法的解释相矛盾。

java scheduling
1个回答
0
投票

线程数是可控的。可以启动单线程执行程序。 ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();

© www.soinside.com 2019 - 2024. All rights reserved.