Java 如何根据时间或特定数量批处理事件

Java 如何根据时间或特定数量批处理事件,java,multithreading,queue,Java,Multithreading,Queue,我有一个事件系统,当一个特定的对象被更改时,我可以订阅它。收到此事件后,我希望为此对象执行任务 有可能同时更改多个对象。例如,如果我更改1000个对象,我将获得1000个事件。问题是,我要执行的任务处理1000个对象所需的时间比处理1000个对象所需的时间长1000倍。我无法更改事件生成的方式 所以我想的是,当我收到这些事件时,将它们打包。例如,在队列中收集1000个项目,然后从收集的事件中对所有对象执行任务。 问题是:当只有999个对象被更改时会发生什么?那么我的任务永远不会执行。因此,我还希

我有一个事件系统,当一个特定的对象被更改时,我可以订阅它。收到此事件后,我希望为此对象执行任务

有可能同时更改多个对象。例如,如果我更改1000个对象,我将获得1000个事件。问题是,我要执行的任务处理1000个对象所需的时间比处理1000个对象所需的时间长1000倍。我无法更改事件生成的方式

所以我想的是,当我收到这些事件时,将它们打包。例如,在队列中收集1000个项目,然后从收集的事件中对所有对象执行任务。 问题是:当只有999个对象被更改时会发生什么?那么我的任务永远不会执行。因此,我还希望在插入第一个对象5秒后耗尽队列


是否有用于此特定任务的库?或者我必须自己用队列和一些逻辑来构建它来做我想做的事情吗?

我几乎可以肯定,不存在任何特定的库来实现这一点,我曾经为像您这样的事件使用了相同的策略,创建了一个队列或存储库来存储事件,并启动了一个ScheduledExecutorService,其中一个任务以固定速率运行,要使用事件,如果没有要使用的事件,我只是跳过了执行。您甚至可以在storeadd方法中放入一个验证,以查看该存储是否有1000个或更多,并且尚未处理,因此您可以启动该任务