如果我静态初始化地图并将引用设置为Collections.unmodifiableMap(Map m).我是否需要同步读取?
private static final Map<String,String> staticMap;
static{
Map<String,String> tempMap = new HashMap<String,String>();
tempMap.put("key 1","value 1");
tempMap.put("key 2","value 2");
tempMap.put("key 3","value 3");
staticMap = Collections.unmodifiableMap(tempMap);
}
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 10
不,您在那里创建的地图实际上是不可变的(因为没有任何引用可变支持地图)并且对并发访问是安全的.如果你想更清楚地保证这一点,并且更容易创建地图,那么Guava的ImmutableMap类型就是为了这种用途而设计的(除此之外):
private static final ImmutableMap<String, String> staticMap = ImmutableMap.of(
"key1", "value1",
"key2", "value2",
"key3", "value3");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2733 次 |
| 最近记录: |