concurrentmap 는 스 레 드 안전 이 아 닙 니 다.

541 단어 자바
if (!map.containsKey(key)) 
   return map.put(key, value);
else
   return map.get(key);

Thread A calls containsKey and finds out that the key is not present, but is immediately suspended.Thread B calls containsKey and finds out that the key is not present, and has the time to insert its value v2.Thread A resumes and inserts v1, "peacefully"overwriting (since put is threadsafe) the value inserted by thread B.
다 중 스 레 드 환경 에 서 는 ConcurrentHashMap. putIfAbsent (K key, V value) 방법 을 사용 해 야 합 니 다.

좋은 웹페이지 즐겨찾기