본문
[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
'컴퓨터 > 이론: 개발' 카테고리의 다른 글
[2017.11.16] 23. 라이브러리와 프레임워크 개념 (0) | 2017.11.16 |
---|---|
[2017.11.15] 29. Thread-safe List (CopyOnWriteArrayList) 실습2 (0) | 2017.11.15 |
[2017.11.15] 27. 람다(Lambda) 개념과 사용 이유 (0) | 2017.11.15 |
[2017.11.13] 22. Git Source Tree (0) | 2017.11.13 |
[2017.11.13] 21. Git VS GitHub VS GitFlow 개념 (0) | 2017.11.13 |
댓글