我正在使用以下工作流程进行项目:
第一部分:
- 事件异步到达并在阻塞队列中排队,我们称之为Q1
- 线程从该队列中获取下一个可用项目
- 项目最终并行运行 {N} 个任务
- 每个任务将其结果排入第二个队列,我们称之为Q2。
- 当项目处理完成时,从队列中读取下一个项目。
第二部分:
- 另一个线程一次读取Q2一个对象并处理结果
所以,这里的问题是,第一个队列中的每个项目最终都会并行运行大量任务,每个任务都将其结果排队。第二个队列必须按顺序处理,一次一个项目,但它被淹没了。
我的问题
我需要一种机制,使线程处理Q1等到Q2中的项目数低于特定阈值。实现这一目标的最佳方法是什么?有没有办法拥有事件驱动的解决方案而不是轮询解决方案?