我们有一个ThreadPoolExecutor,它将任务从队列中拉出以供执行。对于给定类型的对象,例如。用户,我们可以在不同实例之间进行并行操作。但是,单个实例的操作必须按顺序进行。对ThreadPool执行程序中特定对象的排序操作
由于线程调度的原因,线程池无法保证这一点,因为可以按非确定性顺序连续插入两个项目。我没有看到一种方法来完成这是标准的Java库。是否有提供此功能的第三方解决方案?
我们可以自己实现,但这是一个相当复杂的问题,我宁愿在这一点上采用强化的解决方案。
感谢
我们有一个ThreadPoolExecutor,它将任务从队列中拉出以供执行。对于给定类型的对象,例如。用户,我们可以在不同实例之间进行并行操作。但是,单个实例的操作必须按顺序进行。对ThreadPool执行程序中特定对象的排序操作
由于线程调度的原因,线程池无法保证这一点,因为可以按非确定性顺序连续插入两个项目。我没有看到一种方法来完成这是标准的Java库。是否有提供此功能的第三方解决方案?
我们可以自己实现,但这是一个相当复杂的问题,我宁愿在这一点上采用强化的解决方案。
感谢
您可以创建为每个对象队列,并添加任务到ThreadPoolExecutor的执行该对象的下一个任务。为确保任务不会在对象上同时执行,您可以在执行此操作时锁定对象或队列。
怎么样创建你的ThreadPoolExecutor
与PriorityBlockingQueue
。 “优先级”可以被定义为一个比较器,它可以通过实例id来区分,或者可以将类似项目分组。