Zin0_0 2021. 1. 29. 17:37
반응형

Array Deque

 

  • AbstractCollection 클래스와 Deque, Cloneable, Serializable 인터페이스를 상속받는 클래스

  • 특징

    • 사이즈 제한이 없다. ( -> 입력받는 크기에 따라 resize 된다.)

    • 외부 동기화가 없는 상태에서, 멀티 쓰레드에서 동시 엑세스가 안된다. == Thread Safe를 보장하지 않는다.)

    • 요소로 null을 저장할 수 없다.

    • Stack과 LinkedList보다 빠른 속도

  • Thread-safe

    • 멀티 스레드 프로그래밍에서 일반적으로 어떤 메소드나 변수, 또는 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램 실행에 문제 없음

    • 하나의 메소드가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 해당 메소드를 호출해서 동시에 함께 실행해도 각 스레드의 메소드 수행 결과가 올바르게 나옴

    • Thread-safe를 지키기 위한 방법

      • Re-entrancy

        • 어떤 메소드가 한 스레드에서 호출되어 실행 중일 때, 다른 스레드가 해당 메소드를 호출해도 결과가 각각에게 올바르게 주어져야함

      • Thread-local storage

        • 공유 자원의 사용을 최대한 줄여 각 스레드에서만 접근 가능한 저장소들을 사용함으로써 동시 접근을 막는다. ~> 동기화 방법과 관련됨, 공유상태를 피할 수 없는 경우 사용
      • Mutual exclusion

        • 공유 자원을 꼭 사용해야하는 경우 해당 자원 접근을 세마포어나 뮤텍스 등의 Lock으로 통제
      • Atomic operation

        • 공유 자원에 접근할 때 Atomic한 연산을 이용하거나 Atomic하게 정의된 접근 방법을 사용해서 상호 배제를 구현

 

Reference

docs.oracle.com/javase/7/docs/api/java/util/ArrayDeque.html

gompangs.tistory.com/entry/OS-Thread-Safe%EB%9E%80

반응형