gpt4 book ai didi

java - ConcurrentHashMap 在向其添加元素时被删除

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

我正在尝试了解多线程。假设我有一个类,它有一个方法可以向 ConcurrentHashMap 添加值。

public void add(ConcurrentHashMap<Integer,String> map){
if(!map.containsKey(1){
map.put(1,"test");
}
}

如何确保在向 map 添加元素时,不同的线程不会删除特定值或删除整个 map 。

我尝试在添加方法中同步(映射),但这不起作用。

编辑1:我没有正确地构建它。我的意思是,如果其他线程使 map 为空,而我无权访问使其为空的代码。如何避免add方法中的空指针异常。我可以在输入方法后测试它是否为空,但是如果在检查之后但在向其添加内容之前它变为空怎么办?

最佳答案

首先,您无法在 Java 中“删除整个 map ”。如果 map 变成垃圾,它就变成垃圾。其次,如果两个线程竞争,就会发生一些事情。该映射将始终有效,并显示两个线程按某种顺序执行操作的结果。这就是并发映射的全部用途——确保映射有效且一致,而不需要您同步其上的操作。

关于java - ConcurrentHashMap 在向其添加元素时被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909773/

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