gpt4 book ai didi

java - 如果对于每个条目只有一个线程访问它,映射是否需要同步?

转载 作者:行者123 更新时间:2023-12-01 08:15:41 26 4
gpt4 key购买 nike

我有一张 map 。可以说:

Map<String, Object> map = new HashMap<String, Object>();

多个线程正在访问此映射,但是每个线程仅访问映射中自己的条目。这意味着,如果线程 T1 将对象 A 插入到映射中,则可以保证没有其他线程会访问对象 A。最后线程 T1 也会删除对象 A。

还保证没有线程会迭代 map 。

这张 map 需要同步吗?如果是的话你会如何同步它? (ConcurrentHashMap、Collections.synchronizedMap() 或同步块(synchronized block))

最佳答案

是的,您需要同步或并发映射。只需考虑一下映射的大小:两个线程可以并行添加一个元素,并且都增加大小。如果您不同步 map ,则可能会出现竞争条件,并导致尺寸不正确。还有很多其他事情可能会出错。

但是您也可以为每个线程使用不同的映射,不是吗?

ConcurrentHashMap 通常比同步 HashMap 更快。但选择取决于您的要求。

关于java - 如果对于每个条目只有一个线程访问它,映射是否需要同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526931/

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