我正在尝试编写一个用于买卖元素的媒人。在内部,我使用 2 个 HashMap,每个商品 1 个用于购买,1 个用于销售,即如果用户向我发送购买请求,我会将其放入我的购买 HashMap 中,反之亦然。反之亦然。关键是价格,而值是该价格的订单队列(这样,如果价格相同,我可以以先进先出的方式处理请求。一旦我收到请求,例如购买,我就会查看出售HashMap
用于任何匹配。用户可以更改他们想要购买的商品的数量或价格,但不能更改商品本身,例如可以更改自行车购买请求的价格或数量,但不能将自行车更改为船)
我想使其成为多线程,以便可以同时处理多个请求。因此,我将 hashmaps
放入 ConcurrentHashMaps
中,并将队列放入 ConcurrentLinkedQueue
值中。然而,仍然可能存在并发问题,例如我正在查看销售 map 以找到与我的购买请求匹配的匹配项,但是当我进行匹配时,销售请求会被用户修改为不同的价格。
如何使用彼此同步
两张 map ?我想同时在两个 map 中锁定相同的段(即该价格的队列)。
最佳答案
添加单个 map ,您可以在其中跟踪可用库存,仅在那里进行锁定。
注意:ConcurrentHashMap 也不锁定单个条目,而是锁定存储桶,因此可能有更多元素。
关于java - 如何同步2个ConcurrentHashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60898873/