我想在ConcurrentHashMap上进行原子getAndClear()
。
我想定期处理地图中的所有元素,然后清除地图。偶尔,数据会再次插入,一段时间后,我会再次进行相同的处理。
数据结构为map
,以防止重复。它也是ConcurrentHashMap
,以支持从多个线程放入数据。
选项1:我可以处理每个元素,并在处理完之后将其删除。问题在于,可能会插入具有相同键的新元素,这些元素将同时而不是定期地再次处理。
选项2:在清空地图时同步并阻止插入。不想那样。
选项3:我想到的最好的方法:使用AtomicReference.getAndSet()
。应该可以,但使用起来有点麻烦。
是否知道是否有API,包装程序或其他方法可以实现此目标?谢谢。