繁体   English   中英

Java ScheduledFuture 不等待任务完成

[英]Java ScheduledFuture doesn't wait for task to finish

我有问题。 我正在使用以下代码:

ScheduledExecutorService tradingPool = Executors.newScheduledThreadPool(1);
Runnable runTradingTask = () -> {
    new TradingDriver().run();
};
ScheduledFuture<?> scheduledTradingFuture = tradingPool.scheduleAtFixedRate(runTradingTask, 0, 1, TimeUnit.SECONDS);

在我的TradingDriver.run()中,我有一些 SQL 语句,所以这需要一些时间,大约 1.5 秒,但我注意到下一次运行已经开始。 为了检查我的想法是否正确,我在 function 的端点处打印了“开始”和“结束”。 这是我的结果:

Started
Started
Ended
Started
Ended
Started
Ended
Started

如您所见,它打印 2x “Started”,这意味着在第一次运行未完成时开始另一次运行。 现在我看到了这篇文章: ScheduledExecutorService 等待任务完成,但我可以看到 ScheduledFuture 没有等待完成。

如何在两次执行之间连续运行TradingDriver.run() 1 秒?

使用 scheduleWithFixedDelay 而不是 scheduleAtFixedRate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM