在ConcurrentHashMap(put()
,remove()
等)上执行所有非retreival操作是否需要封装在synchronized(this)
块中?我知道所有这些操作都是线程安全的,那么这样做有没有真正的好处/需要?唯一使用的操作是put()
和remove()
。ConcurrentHashMap需要包装在同步块中吗?
protected final Map<String, String> mapDataStore = new ConcurrentHashMap<String, String>();
public void updateDataStore(final String key, final String value) {
...
synchronized (this) {
mapDataStore.put(key, value);
}
...
}