동기화 자료구조 테스트2

스레드 4개를 생성후

자료구조를 바꿔가며 정수 10000개를 add,get

각 스레드들이 연산을 하는데 걸리는시간과

모든스레드가 작업을 완수할때까지의 시간을측정

여러번 실행해서 제일 평균에 가까운값

1.일반 arraylist

52b838faf7bc66974a50175790a574f1.png d9ec13d58cf32e0800344ec1b587feb7.png

2.arraylist 동기화블럭

add를 부르는 method를 동기화처리.

–현재 안드로이드에서 보이는코드

–collection.synchronizedarraylist 는 read작업에도 lock이 걸려서 안쓰는듯함

adbea1d45f1f4581aa2fb4b447c1328b.png

read는 동기화를 걸지않아서 1번 결과와 다를게없음.

대신에 size를 매번 연산해보기로함

842fa1ec4f7e51ad171bf161333e0388.png

10000개의 원소인데 성능차이가 그렇게 많이안남

3.copyonarraylist

19cdf900681bbea3f37e0eaf086bb005.png

0f00e6e69659882c775ff2ec81704041.png

쓰기는 매우느리고

읽기는 멀티스레드 환경에서는 확실히 이점이있음

2번이 일반적인 상황에서 제일 합리적으로보임

copyonarraylist 를 사용하려면 데이터의 갯수가 적지않고

읽기가 많고 매우 정적인 데이터와 관련된 배열을 찾아야 장점을 살릴수있을듯함