получить метод synchrozie из карты? - PullRequest
0 голосов
/ 01 мая 2011


чтобы синхронизировать мою карту, я использую метод

myObj = myMap.get("aaa"); 

if (myobj==null)
    synchronize (someObject){
        myObj = mymap.get("aaa");  
        if (myobj==null){
            myObj = createNew();
            myMap.put(myObj);

    }
 }
return myObj;

Это лучший способ. дважды запрашивать нулевое условие?

1 Ответ

2 голосов
/ 01 мая 2011

синхронизация только get не очень полезна. get не меняет состояние карты. Вам также придется синхронизировать put (с тем же монитором объекта). И вы можете использовать Collections.synchronizedMap(..) или ConcurrentHashMap для этого

Обновление: для get & then put вы можете использовать ConcurrentHashMap.putIfAbsent(..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...