생성자 - 사용자 시나리오를 상상해보십시오. 스레드 A는 항목을 생성하며 다른 스레드에서 많은 스레드가이를 소비합니다.저렴 : 단일 ConcurrentHashMap의 n 반복자 또는 HashMap의 n 인스턴스를 사용하는 순회
이 경우 각 소비자 스레드에 많은 항목을 전달합니다.
는 저렴 (메모리에있는 차의 CPU utlization의 의미에서 차이)라면 나 자신을 요청하고이를 수행
- 각 소비자가
HashMap
의 별도의 인스턴스를 스레드 제공합니다.Map
한 소비자를 통과 한 후,Map
의 새로운 인스턴스가 생성되고
또는
- 이 하나의
ConcurrentHashMap
를 사용하고Iterator
을 만들 수있는 다음 스레드에 다음 생성 된 항목을 전달하는 데 사용 각각의 소비자 스레드에 대해 그리고Iterator
을 스레드에 넘겨서Map
을 제거한 후에 - 각 Iterator는 자체의Map
뷰를 포함합니다.
어떻게 생각하십니까? 더 많거나 적은 일반적인 대답이 가능합니까?
또는 항목 수, 스레드 등의 일부 변수에 크게 의존합니까?
편집 : 아니면 이런 종류의 문제를 더 잘 해결할 수있는 다른 종류의 데이터 구조를 사용해야합니까?
+1 흥미로운 질문입니다. 'ConcurrentLinkedQueue'는 거의 이것을하지만,별로는 아닙니다. – finnw