java - Java ScheduledFuture 不等待任务完成
问题描述
我有问题。我正在使用以下代码:
ScheduledExecutorService tradingPool = Executors.newScheduledThreadPool(1);
Runnable runTradingTask = () -> {
new TradingDriver().run();
};
ScheduledFuture<?> scheduledTradingFuture = tradingPool.scheduleAtFixedRate(runTradingTask, 0, 1, TimeUnit.SECONDS);
在我的TradingDriver.run()
我有一些 SQL 语句,所以这需要一些时间,大约 1.5 秒,但我注意到下一次运行已经开始。为了检查我的想法是否正确,我在函数的端点打印了“Started”和“Ended”。这是我的结果:
Started
Started
Ended
Started
Ended
Started
Ended
Started
如您所见,它打印 2x “Started”,这意味着在第一次运行未完成时开始另一次运行。现在我看到了这篇文章:ScheduledExecutorService 等待任务完成,但我可以看到 ScheduledFuture 没有等待完成。
如何TradingDriver.run()
在两次执行之间连续运行 1 秒?
解决方案
使用 scheduleWithFixedDelay 而不是 scheduleAtFixedRate
推荐阅读
- java - Scene builder GUI components do not look the same when I run the project from IntelliJ
- python - fxcmpy REST api 的连接问题
- c# - 如何使用 Foreach 循环将数据从数据表节点迭代到 treenode
- excel - Creating a macro which runs from the last row from which it was closed
- javascript - 如何将选择器添加到元素 HTML?
- python - Same table is extracted twice from a pdf by Camelot-py
- python - Run single folder of pytest tests in vscode
- r - 创建选择后如何选择剩余的值?
- regex - How can I redirect users from a url to another using regex and htaccess?
- c++ - 是否可以使用 if constexpr 删除控制流语句?