【发布时间】:2018-10-16 11:22:40
【问题描述】:
当我定期执行一项耗时的任务时,结果并不符合我的预期。
public static void main(String[] args) {
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(10);
scheduler.scheduleAtFixedRate(() -> {
System.out.println("start: " + System.currentTimeMillis());
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("end : " + System.currentTimeMillis());
}, 0, 1, TimeUnit.SECONDS);
}
/*
start: 1539688734439
end : 1539688737442
start: 1539688737443
end : 1539688740447
start: 1539688740447
end : 1539688743452
start: 1539688743452
end : 1539688746456
start: 1539688746456
end : 1539688749461
...
*/
如上图,两个start之间的间隔是3秒而不是1秒。
【问题讨论】:
标签: java executorservice scheduledexecutorservice