본문

[2017.11.15] 28. Thread-safe List (CopyOnWriteArrayList) 실습1

도입

이번 포스팅에서는 예전부터 궁금했던 Thread의 병렬처리로 인한 객체나 자료형에 동시접근과 관련한 궁금증을 해결할 예정이다.

Thread의 병렬처리와 Thread-safe한 List인 CopyOnWriteArrayList로 실습할 예정이다.


궁금증

우선, Thread-safe한 List에 접근은 많은 Thread가 접근하려고 해도 1개의 Thread의 접근이 완료된 후 다른 Thread의 접근이 가능하다.


여기서 궁금증은 List의 독점 사용은 Thread가 코드 중 List에 접근할 때만 유효한가? 아니면 해당 Thread가 끝날 때까지 유효한가? 이다. 그림으로 표현하면 

해당 코드에서만 독점

Thread가 끝날 때까지 독점


 


실습

Thread1과 Thread2를 생성한다.

Thread 1의 역할

Thread 2의 역할

1. CopyOnWriteArrayList에 데이터 10개 입력

2. 5초 Sleep 후 현재 데이터 개수 출력

3. CopyOnWriteArrayList에 추가 데이터 10개 입력

1. 3초 Sleep 후 CopyOnWriteArrayList의 Size()-1만큼 데이터 제거




이 결과, Thread1의 2에서 현재 데이터 개수를 출력했을 때, 1개라면 해당 코드에서만 독점, 10개라면 Thread가 끝날 때까지 독점이라는 것을 판단할 수 있다.


코드


스크린 샷


결론

List의 독점 사용은 Thread가 코드 중 List에 접근할 때만 유효하다.



#CopyOnWriteArrayList #Thread safe #Thread 병렬 #Thread safe List

공유

댓글