我想要一个ThreadPool来执行客户订单,多个订单应该并行处理,但是对于同一个客户订单应该按生成的顺序处理。 这意味着如果任何线程已经处理 customerA 订单,则在处理第一个订单之前,没有其他线程可以处理 CustomerA 的下一个订单。
是否有适合我的情况的 ThreadPool 实现?
最佳答案
我不认为ThreadPools
有这样的标准功能。您需要做的是创建“调度程序”,它将从池中“分配线程”到客户订单。它应该保存唯一订单 ID -> 线程
的内部映射。如果有一个订单正在处理新的更新,则该订单应该等待。
对于此任务,您应该研究 Actor 模型(以及 akka - 因为它的实现)。它可以轻松地描述这个解决方案。
关于java - 使用ThreadPool顺序执行类似的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518684/