使用多个线程处理两个地图

时间:2014-02-06 19:14:40

标签: java multithreading

我正在努力实现以下目标:

  1. 我有两张地图(不确定哪种安全使用且工作正常)
  2. 两者都像Map<Integer, Object>(让我们说从现在开始Map1Map2
  3. Object始终会先插入Map1
  4. 每次Integer插入AtomicInteger时,Object值都会以Map1递增
  5. 插入后,我需要从Object获取第一个插入的Map1并将其移至Map2,然后使用Object
  6. 执行异步操作
  7. 在该操作的回调中,我需要从Object删除Map2并重复
  8. Map1是一种队列,Map2包含所有正在运行的操作。运行操作量可以一次调整为1以上。

    例如,我连续执行5个操作,运行操作的最大数量为4,顺序为:

    将所有5个放入Map1的0,1,2,3,4个ID中。然后应删除索引0,1,2,3并将其移至Map2。当Object的第一个Map2准备好后,应将其移除,并将Map1中的最后一个移至Map2

    我尝试使用ConcurrentHashMap,但是从最后插入的项目开始使用Iterator.next()进行迭代,并在对象准备就绪时从Map2删除项目时出现问题。

1 个答案:

答案 0 :(得分:2)

Map1 is sort of a queue

使用阻塞队列,这是一种FIFO数据结构。