У меня есть класс контейнер, содержащий коллекцию, которая будет использоваться несколькими потоками:Синхронизированная коллекция по сравнению с синхронизированным методом?
public class Container{
private Map<String, String> map;
//ctor, other methods reading the map
public void doSomeWithMap(String key, String value){
//do some threads safe action
map.put(key, value);
//do something else, also thread safe
}
}
Что было бы лучше, чтобы объявить метод synchronized
:
public synchronized void doSomeWithMap(String key, String value)
или использовать стандартную резьбу -сезонный декоратор?
Collections.synchronizedMap(map);
Если вам не нужно самостоятельно обрабатывать параллелизм, то чеча эту карту здесь http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html – AntJavaDev
Ни то, Используйте [ConcurrentHashMap] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html): – TheLostMind
@ TheLostMind Не понятно, почему синхронизация метода неправильная ? –