这是我的问题:
- 我在收到事件后执行了一个长时间运行的计算(我们称之为“任务”)。
- 这些事件告诉我还有更多数据需要处理。该事件包括我现在可以安全地处理任务数据的位置的索引。
- 当我收到一个新事件时,我最终需要处理更多数据。
- 当我收到一个新事件时,我不想取消现有任务,而是让它完成,然后开始下一个任务。
- 如果我在一个任务期间收到多个事件,下一个任务应该只处理最近的事件并丢弃所有以前的事件。
- 我只有足够的资源一次处理一项任务。
是否有Executors.newSingleThreadExecutor()
我可以用来实现上述条件的修改版本?我可以用 BlockingQueue 或 AtomicReferences 做一些优雅的事情吗?有没有一种简单的方法来做我上面描述的事情?