Java中优先级队列的最佳数据结构是什么?

时间:2016-08-29 16:48:12

标签: java multithreading algorithm data-structures

我有一组订单对象。该集合将被侦听订单插入/更新的侦听器添加或更新。同时,监听器还监听由熵变化引起的属性变化(顺序状态)。

例如,更改是客户信用评级会将该客户的所有订单更新为暂停状态。在任一类型的更新中,侦听器都会在单个调度程序线程上更新订单集合。计划的线程克隆并处理订单集合以定期更新UI。

要求是:

  1. 订单更新和插入应尽早反映在用户界面上。
  2. 批量状态更新不应阻止/延迟订单更新和插入。
  3. 这种情况的推荐数据结构和执行策略是什么?我们正在使用Java 7。

3 个答案:

答案 0 :(得分:0)

一个简单的解决方案就是使用两个独立的队列(一个'直播'队列和一个'队列)。

作者可以决定写一个' live'或批量'队列。用户界面可以先从“直播”中读取。排队,当“生活”时队列是空的,切换到批量'排队(同时仍然检查读取之间的'直播队列)。

您也可以以这种方式实现实际的优先级队列。只需将行为封装在单个队列接口后面。

答案 1 :(得分:0)

听起来像是队列结构的任务和单独的类似列表的索引,以非阻塞方式重新排序。

答案 2 :(得分:0)

I would probably implement a task queue ,where priority is given to order updates.The UI refresh thread will process the queue ,working on order updates first.