我可以帮您进行翻译。以下是您需要翻译的内容:
有没有办法在不同步生产者添加逻辑和定时器线程(消费者)的逻辑的情况下使这个逻辑线程安全?我考虑过原子清除+获取,但似乎ConcurrentMap没有提供这样的功能。另外,我必须提到更新应该按更新对象ID保留,因此我不能用队列或其他东西替换映射。
有什么想法吗? 谢谢!
我希望实现以下逻辑:
-将使用以下结构
//Map<String, CopyOnWriteArrayList> keeping the pending updates
//grouped by the id of the updated object
final Map<String, List<Update>> updatesPerId = new ConcurrentHashMap<>();
-n个生产者将会向updatesPerId映射表中添加更新(对于相同的id,可以同时添加2个更新)
-一个TimerThread将会定期运行并处理接收到的更新。类似于:
final Map<String, List<Update>> toBeProcessed = new HashMap<>(updatesPerId);
updatesPerId.clear();
// iterate over toBeProcessed and process them
有没有办法在不同步生产者添加逻辑和定时器线程(消费者)的逻辑的情况下使这个逻辑线程安全?我考虑过原子清除+获取,但似乎ConcurrentMap没有提供这样的功能。另外,我必须提到更新应该按更新对象ID保留,因此我不能用队列或其他东西替换映射。
有什么想法吗? 谢谢!