【发布时间】:2021-03-25 14:02:36
【问题描述】:
我有一个事件系统,当特定对象发生更改时,我可以订阅它。收到这个事件后,我想为这个对象执行一个任务。
可能同时更改多个对象。例如。如果我更改 1000 个对象,我会得到 1000 个事件。问题是我要执行的任务处理 1 个对象 1000 次比 1000 个对象 1 次需要更长的时间。我无法更改事件的生成方式。
所以我的想法是在收到这些事件时对其进行批处理。例如。在队列中收集 1000 个项目,并对收集到的事件中的所有对象执行任务。 问题是:当只有 999 个对象被更改时会发生什么?然后我的任务永远不会执行。所以我也想排空队列,例如插入第一个对象后 5 秒。
是否有任何用于此特定任务的库?还是我必须自己使用队列和一些逻辑来构建它来做我想做的事情?
【问题讨论】:
标签: java multithreading queue