본문 바로가기
Java/알고리즘과 자료구조

CopyOnWriteArrayList

by Mecodata 2024. 5. 2.

정의

- java.util.concurrent.CopyOnWriteArrayList

- Java에서 제공하는 스레드 안전한 리스트 클래스  

- 리스트의 크기가 매우 크고 변경이 빈번한 경우에는 성능 저하가 발생할 수 있음

 

특징

  1. 스레드 안전성: 리스트의 내용을 변경하는 작업이 복사본을 만들어 쓰기 때문에 다른 스레드가 영향을 받지 않아 여러 스레드가 동시에 CopyOnWriteArrayList에 접근해도 안전하게 사용 가능 
  2. 읽기 작업이 많은 상황에 적합: 리스트에 대한 변경이 드물고, 대신에 자주 읽기 작업이 발생하는 경우에 유용
  3. 내부 복사: 리스트에 요소를 추가하거나 제거할 때마다 내부적으로 새로운 배열이 생성되어 변경 작업이 빈번하지 않은 경우에는 효율적이지만 변경 작업이 많이 발생하는 경우에는 성능이 저하될 수 있음
  4. 데이터 일관성 보장: 스레드 안전성을 위해 복사본을 만들어 사용하기 때문에, 리스트의 데이터에 대한 일관성이 보장
    → 다른 스레드가 변경 작업을 수행할 때에도 기존 스레드가 동일한 데이터를 읽을 수 있음

주요 메소드

- add() = 리스트에 요소 추가

- remove() = 리스트에서 지정한 요소 제거 (인덱스로도 가능)

- clear() = 리스트 비우기

- size() = 리스트 구성 요소 수 반환

- get() = 지정한 인덱스 위치에 있는 요소 반환

- iterator() = 리스트 반복자 반환

- contains() = 지정한 요소가 리스트에 포함되어 있는지 여부 반환

- toArray() = 리스트 → 배열로 변환

- set() = 지정한 인덱스 위치에 있는 요소를 지정한 요소로 대체

- isEmpty() = 리스트가 비어있는지 여부 반환

 

'Java > 알고리즘과 자료구조' 카테고리의 다른 글

RestTemplate와 WebClient  (0) 2024.04.12
com.jcraft.jsch  (0) 2023.12.13
java.util.HashSet  (0) 2023.11.14
java.util.Stack  (0) 2023.06.21
java.lang.StringBuilder, StringBuffer  (0) 2023.05.16

댓글