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我会做一些重构,也许我可以去掉另一个映射,只使用队列,如果队列符合我的需要,我明天会告诉你们结果。