아래 답변을 기반으로 : 여전히 나에게 명확하지 않습니다 : concurrentMap에서 동기화 된 구문이 있으면 무엇을합니까? 즉 concurrentmap의 경우, 동기화 된 (맵) 대 비동기 사이의 차이점은 무엇입니까? 나는 해결책의 정확성이나 믿음에 관심이 없다.. 질문에 대한 대답 : Q : concurrentmap에서 동기화하는 것과 동기화하지 않는 것의 차이점은 무엇입니까? 특히 성능면에서 .. 충분할 것입니다. 더 이상 아무것도.
나는 어떤 일이 일어나고 어떤 보충적 조언이 없어도 관심이 있습니다.동기화 된 컬렉션에서 동기화 -> 성능 문제
나는 약간의 정신적 인 문제를 해결할 수있는 이론적 인 질문이 있습니다. Concurrent Collection 클래스가 => ConcurrentHashMap map이라고 가정합니다.
내가 세 가지 방법이 있다고 가정 :- TestCase1 : & B. A는 방법 항목 호출하고 B가의 Method3를 호출 두 개의 스레드를 생성
method1: synchronized(map){ doSomethingWithThemap(); //Assume put integers 1.. 1000000 } method2:doSomethingWithThemap(); //Note it is not synchronized method3:doSomethingElseWithThemap(); //Assume put integers 2000000.. 3000000
지금이 개 테스트 케이스를 가정합니다.
- TestCase2 : 두 개의 스레드 A '& B'를 생성합니다. A '는 method2를 호출하고 B'는 method3을 호출합니다. 내가 동기화 된 블록은지도에 잠금을하기 때문에 내가 이해에서의 TestCase1 B가 동시 불구하고,지도에 추가 할 수 없기 때문에 TestCase2은 승리를 기대하는 성능의 관점에서
하고, 이것은 TestCase2의 경우가 아닙니다.
단위 테스트이 가설을 검증하지 마십시오.
Q : 여기에 무엇이 누락 되었습니까? 즉, concurrentcollection에서 동기화 된 블록이 성능에 전혀 영향을 미치지 않는다면?
method1은 1 백만 개의 정수를지도에 넣고 method2는 무엇을합니까? – esej
비동기식 블록에서 정확히 같은 것. –