gpt4 book ai didi

java synchronizedMap 对 map 对象的操作应该是同步的

转载 作者:行者123 更新时间:2023-12-01 18:54:31 29 4
gpt4 key购买 nike

我的代码使用以下内容:

public class Obj{
public String someOperation(){...}
};

public class ClassA{
private Map<Integer, Object> m_MsgHash;

public boolean init()
{
m_MsgHash = Collections.synchronizedMap(new LinkedHashMap<Integer, Object>(1001, 1.0F, true));
}
private Object fetchFromHash(int Id)
{
return m_MsgHash.get(Id);
}

public void HandleMsg(int Id)
{
Object obj = fetchFromHash(Id);
// do some operation on obj needs to be synchronized ?
//synchronized (m_MsgHash) {
obj.someOperation();
//}
}
}

我从Java Doc了解到一旦迭代我的 m_MsgHash 我必须使用 synchronized 关键字。但我的问题是,当使用从 map 中获取的对象时,我是否需要使用同步

最佳答案

对于synchronizedMap 结果的简单操作(例如 get),不需要“synchronized”。如果 obj 引用的对象本身是从多个线程访问的,并且至少被其中一个线程修改,则需要在同一个对象上同步对其的所有访问,否则保证多线程的正确性。

关于java synchronizedMap 对 map 对象的操作应该是同步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561254/

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