假设我有需要处理的x个不同类型的项目。 不断从输入源中读取新项目并传递到此线程进行处理。独特的锁池 - 基于类别的队列
下面是规则:
- 只有一种类型的每一种类型的可以在给定时间进行处理。
- 不同时间的项目可以同时处理?
- 根据类别类型需要处理的顺序。假设有3个新项目,其中2个是1类,2个是1类,2类或1类都可以消耗。但是,当消费第一类物品时,应该保持它们到达的顺序。
如果有x个不同的类型,并且每种类型的项目已被捕获。我应该能够同时处理x个项目。
1类 - 项目-C1-1 项目-C1-2
2类 - 项目-C2-1 项目-C2-2 项目-C2-3
类别-3 - 项目-C3-1
类别-4- - 项目-C4-1 项目-C4-2
在此示例中,每个类别的项目都存在,每个队列中的一个项目应该是可消费的。
假设这里的每个类别是BlockingQueue。并且每个类别都有一个单独的处理线程。
什么是最好的方式来存储传入的项目,使不同的线程试图从每个队列中挑选项目可以同时并且有效地进行?
什么是合适的数据结构来保存BlockingQueue的这样的项目可以有效地获取?
如果您可以建议更好的结构来保存传入值,请分享。
“*我可以同时处理它们,但每种类型只能处理一个类型。”“这是自相矛盾的,就像是说我想要做,但我不想做..请更清楚地说明你的要求.. – hagrawal
说在问题中。提示:编辑它。 –
@ bhrt93使用“*我可以同时处理它们,但是每种类型只能处理一种类型*”有了读者如何理解您想要以不同类别处理类别和项目的方式,与你原来的问题是自相矛盾的。只有在你编辑你的问题并增加了更多的信息之后,你才会明白你想达到什么。 – hagrawal