java - 使用 ScheduledThreadPool 并行执行

标签 java threadpool threadpoolexecutor

目前,我有一个每秒收集数据并将其发送到 API 端点的应用程序。为了每秒运行一次,我使用 ScheduledThreadPoolExecutor 来运行发送数据的线程。问题是发送数据有时需要超过一秒,这会导致下一个数据序列要晚一秒以上才能收集到。有什么方法可以更改(或可以使用其他库),以便即使一个线程未完成发送数据,另一个线程也可以开始并行运行?

最佳答案

处理同一计划任务重叠执行的通常方法是异步执行任务的(耗时)业务逻辑。

换句话说,当触发每秒一次的任务时,将实际工作提交给 ExecutorService(您用于计划任务的那个或另一个)。这样,计划任务在它再次执行之前就已经完成了它的工作(将实际工作排队)。

关于java - 使用 ScheduledThreadPool 并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823119/

相关文章:

java - JTable 标题中的不同颜色

C++ cppreference.com 在谈论哪个线程池?

C# 是否可以中断 ThreadPool 中的特定线程?

java - 如何为 @Async 方法使用自定义执行器?

java - GWT Web 应用程序 - 使用 dom4j 给出错误 : 500 Document Exception

java - java - 如何在Java中迭代时在List中添加元素?

java - 需要更改我的代码以从 Java 对象生成正确的 JSON - Jackson

java - ThreadPoolTask​​Executor 和 ThreadPoolExecutor 的区别和建议

java - 中断需要数小时的 Runnable

java - ThreadPoolExecutor异常通知