目前,我有一个每秒收集数据并将其发送到 API 端点的应用程序。为了每秒运行一次,我使用 ScheduledThreadPoolExecutor
来运行发送数据的线程。问题是发送数据有时需要超过一秒,这会导致下一个数据序列要晚一秒以上才能收集到。有什么方法可以更改(或可以使用其他库),以便即使一个线程未完成发送数据,另一个线程也可以开始并行运行?
最佳答案
处理同一计划任务重叠执行的通常方法是异步执行任务的(耗时)业务逻辑。
换句话说,当触发每秒一次的任务时,将实际工作提交给 ExecutorService(您用于计划任务的那个或另一个)。这样,计划任务在它再次执行之前就已经完成了它的工作(将实际工作排队)。
关于java - 使用 ScheduledThreadPool 并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823119/