2014-02-06 52 views
0

我试图做到以下几点:处理两个地图与多线程

  1. 我有两个地图(目前还不能确定其使用安全和正常工作)
  2. 两者都是一样Map<Integer, Object>(让我们从现在开始说Map1Map2
  3. Object总是插入到Map1
  4. 第一
  5. Integer值每Object被插入到时间递增与
  6. 插入后我需要从Map1第一插入Object并将其移动到Map2,然后用Object
  7. 执行异步操作,在该操作的回调,我需要从Map2删除Object和重复

Map1是排序队列,Map2包含所有正在运行的操作。运行操作的数量可以一次调整为1以上。

比如我在一排和最大金额执行5个操作运行操作是4,顺序将是:

把所有5到Map1与0,1,2,3,4 IDS。然后索引0,1,2,3应该被移除并移动到Map2。当第一个ObjectMap2准备好时,它应该被删除,最后一个从Map1转移到Map2

我试过ConcurrentHashMap,但是从Iterator.next()开始迭代它,从最后插入的项目开始,并且在对象准备好时从Map2中删除项目时出现了一些问题。

回答

2

Map1 is sort of a queue

使用一个阻塞队列是一个FIFO的数据结构。

+0

如果我需要从id(Integer)队列中删除Object,该怎么办?执行前的取消种类。 – Niko

+0

这些队列似乎没有任何键值。 – Niko

+0

@Niko假设你知道删除哪个对象,你可以使用'remove(object)'方法 –