【发布时间】:2020-03-28 08:25:41
【问题描述】:
我正在尝试编写一个用于买卖物品的媒人。在内部,我使用 2 个HashMaps,1 个用于购买,一个用于每个项目的销售,即如果用户向我发送购买请求,我将其放入我的购买 HashMap,反之亦然。关键是价格,而价值是该价格的订单队列(这样如果价格相同,我可以在 FIFO 的基础上接受请求。一旦我收到请求,例如购买,我就会查看出售 @987654323 @ 表示任何匹配项。用户可以更改他们想要购买的商品的数量或价格,但不能更改商品本身,例如可以更改自行车购买请求的价格或数量,但不能将自行车更改为船)
我想让这个多线程,以便可以同时处理多个请求。所以我将我的hashmaps 设置为ConcurrentHashMaps,并将队列值设置为ConcurrentLinkedQueue。但是,仍然可能存在并发问题,例如我正在查看销售地图以找到与我的购买请求相匹配的匹配项,但在我进行匹配时,销售请求被用户修改为不同的价格。
如何将两个地图与eachother 同步?我想同时锁定两个地图中的同一段(即该价格的队列)。
【问题讨论】:
-
也许使用一张地图,然后将每个订单标记为买入或卖出?
标签: java multithreading hashmap concurrenthashmap