我们有一个ThreadPoolExecutor可以将任务从队列中拉出来执行。对于给定类型的对象,例如用户,我们可以在不同的实例中进行并行操作。但是,必须按顺序对单个实例进行操作。
线程池不能保证这一点,因为由于线程调度,连续插入的两个项可以以非确定性顺序完成。我没有看到实现这一目标的手段是标准的java库。是否有提供此功能的第三方解决方案。
我们可以自己实现,但这是一个相当复杂的问题,我宁愿在这一点上采用强化解决方案。
由于
答案 0 :(得分:1)
如何使用ThreadPoolExecutor
创建PriorityBlockingQueue
。 “优先级”可以定义为比较器,它可以通过实例ID或允许您对类似项目进行分组的内容进行区分。
答案 1 :(得分:0)
您可以为每个对象创建一个队列,并将任务添加到ThreadPoolExecutor以执行该对象的下一个任务。为了确保不在对象上同时执行任务,您可以在执行此操作时锁定对象或队列。