【发布时间】:2018-01-03 06:46:12
【问题描述】:
我一直想知道 Java 中 ScheduledExecutorService 的具体情况。
让,
ScheduledExecutorService = new ScheduledThreadPoolExecutor(2);
service.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//Some task taking longer than schedule period to finish executing.
}
},initialDelay,period,TimeUnit.SECONDS);
在这种情况下,假设周期为 4 秒。当计划在 initialdelay 之后开始执行时,任务将被阻塞在 while(true) 无限循环中。 我的问题是每 4 秒后是否会安排一个任务,而不管上一轮任务的执行(未完成)?因为如果是这种情况,这段代码最终会在内存不足后崩溃。
感谢您的帮助。
谢谢。
【问题讨论】:
-
这真的很重要吗?如果你在任务中有
while(true),你的代码已经坏了。 -
是的,我知道。这不是真正的代码。只是任务可能需要比期间更长的时间,但最终肯定会在一段时间后返回。
标签: java multithreading