2015-01-27 2 views
0

ConcurrentHashMap의에 대한 빠른 질문 : ConcurrentHashMap을 사용해야합니까?

public Map<String, String> getA(){ 
get something from db in a HashMap lets call it x 
.... 
do some operations in on x 
.... 
put the result in ConcurrentHashMap lets call it A 
..... 
    return A 
} 

그것이 ConcurrentHashMap의를 가질 의미가 있습니까 아니면 내가는 HashMap에 가야하나요? 당신이 다른 스레드 또는 다른 데이터를 동시에 (멀티 스레드 위임 또는 모두)에서 수술됩니다에있는 경우

1.HashMap
2.ConsurentHashMap

+4

멀티 스레딩을 사용하지 않는 경우에는 필요하지 않습니다. – SLaks

+0

사람들이 CHMaps를 사용하여 iterating하는 동안 etries를 추가/제거 할 알고리즘의 한계를 극복하는 것을 보았습니다 -이 경우에는 떨어 집니까? –

답변

2

, 그래, ConcurrentHashMap를 사용합니다. 그렇지 않으면 HashMap이 제공해야합니다 (제공된 정보가 제공됨).

는 의사 코드를 읽고 바탕으로, 난 당신이 하지는 HashMap의 해야 충분할 때문에 다른 스레드 작업을하고 있다는 인상을 얻을.

+0

비록 멀티 스레딩을 사용하더라도 CHM은 "적절하게 사용될 때"더 잘 작동합니다 (그리고 HM은 잘못 사용하면 중단됩니다). - 관련된 모든 작업에 대해 [C] HM을 통해 잠금이 수행되면 .. – user2864740

0

지도를 수정하거나 읽을 때 경쟁 업체의 방법으로 클라이언트가 들어오는 것을 걱정하지 않으려면 Collections.unmodifiableMap()에 포장하는 것이 좋습니다.

관련 문제