gpt4 book ai didi

Java并发数据结构

转载 作者:行者123 更新时间:2023-12-02 04:26:01 25 4
gpt4 key购买 nike

我正在努力解决有趣的并发问题!不确定我是否理解正确,因为我有点困惑。

enter image description here

为了线程安全,我想使用ConcurrentMap

ConcurrentHashMap<String, BigDecimal> concurrentHashMap = new ConcurrentHashMap<String, BigDecimal>();

public BigDecimal getPrice(String id){
return concurrentHashMap.get(id);
}

public void updatePrice(String id, BigDecimal newPrice){
concurrentHashMap.put(id, newPrice);
}
  1. 该解决方案能否保证线程安全的读/写? ConcurrentMap 是解决此类问题的好选择吗?
  2. 如果我写入"a"键,它会锁定整个 map 还是写入"b"键可用?
  3. 完成任务的以下部分意味着什么? 如果在处理价格 Pa1 期间,价格 Pa2、Pa3 和 Pa4 到达,则应用程序应处理的下一个价格是 Pa4,并且应忽略所有先前的价格。 - 可能我把事情过于复杂化了但这是否意味着如果有新的更新价格到达,我不应该存储并取消价格更新?如果是,那么实现会是什么样子?

感谢您的帮助!

最佳答案

因此,您不会遇到任何死锁情况,请尝试以下操作:或者实现您自己的标志,以在尝试使用资源之前检查资源是否正在使用。

public synchronized void updatePrice(String id, BigDecimal newPrice){
concurrentHashMap.put(id, newPrice);
}

关于Java并发数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com