putIfAbsent를 사용하여 ConcurrentHashMap에 값을 추가합니다 (원자 작업으로 이미 존재하지 않는 경우).putIfAbsent가 ConcurrentHashMap을 수정했는지 여부를 알 수있는 올바른 방법은 무엇입니까?
모두 괜찮아 보이지만 실제로 새 오브젝트가 실제로 추가되었는지 여부를 알 수 있습니다.
내가 가진 가장 좋은 생각은 putIfAbsent의 반환 값이 null인지 확인하는 것입니다. 즉, null 값을 절대적으로 (ConcurrentHashMap이 허용하지 않는) 맵에 넣지 않는 한 오래 작동해야합니다. 내가 놓친 뭔가가 있는지 궁금해. 아니면 올바른 방법일까요?
'putIfAbsent()'의 반환 값을 검사하는 것이 올바른 방법입니다. –
@SeanBright 그래, 그 결론도 나왔다. 그러나 "return == null"은 조작이 뭔가를했는지 확인하는 이상한 방법으로 보였다. –
관련 : [putIfAbsent를 사용하기 전에지도에 키가 포함되어 있는지 확인해야합니다] (http://stackoverflow.com/questions/3752194/should-you-check-if-the-map-containskey-before-using-concurrentmaps-putifabsent) –