Java 使用多线程处理两个映射

Java 使用多线程处理两个映射,java,multithreading,Java,Multithreading,我正在努力实现以下目标: 我有两张地图(还不确定哪张可以安全使用,哪张可以正常工作) 两者都像Map(假设从现在开始Map1和Map2 对象始终首先插入到Map1中 每次将对象插入Map1时,Integer值都会随着AtomicInteger而递增 插入后,我需要从Map1获取第一个插入的对象,并将其移动到Map2,然后对对象执行异步操作 在该操作的回调中,我需要从Map2中删除对象,然后重复 Map1是一种队列,Map2包含所有正在运行的操作。运行操作的数量可以调整为一次多于1个 例如,我在一

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

  • 我有两张地图(还不确定哪张可以安全使用,哪张可以正常工作)
  • 两者都像
    Map
    (假设从现在开始
    Map1
    Map2
  • 对象始终首先插入到
    Map1
  • 每次将
    对象插入
    Map1
    时,
    Integer
    值都会随着
    AtomicInteger
    而递增
  • 插入后,我需要从
    Map1
    获取第一个插入的
    对象
    ,并将其移动到
    Map2
    ,然后对
    对象执行异步操作
  • 在该操作的回调中,我需要从
    Map2
    中删除
    对象
    ,然后重复
  • Map1
    是一种队列,
    Map2
    包含所有正在运行的操作。运行操作的数量可以调整为一次多于1个

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

    将所有5个ID为0,1,2,3,4的
    Map1
    中。然后应删除索引0,1,2,3并将其移动到
    Map2
    。当
    Map2
    中的第一个
    对象
    准备就绪时,应将其删除,并将
    Map1
    中的最后一个移动到
    Map2


    我尝试使用
    ConcurrentHashMap
    ,但使用
    迭代器进行迭代。next()
    从上次插入的项开始,在对象准备好后从
    Map2
    中删除项时遇到一些问题。

    Map1有点像队列


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

    如果我需要从id为(整数)的队列中删除对象,该怎么办?在执行之前有点取消。这些队列的值似乎没有任何键。@Niko假设你知道要删除哪个对象,你可以使用
    remove(Object)
    method我会做一些重构,也许我可以去掉另一个映射,只使用队列,如果队列符合我的需要,我明天会告诉你们结果。