Skip to content

Files

Latest commit

 

History

History
37 lines (19 loc) · 1.83 KB

동시성.md

File metadata and controls

37 lines (19 loc) · 1.83 KB

동시성

  • 동시에 실행 되는 것처럼 보이는 것

  • 코틀린은 코루틴을 이용하여 동시성을 만족할 수 있다.

    • 코루틴 : 싱글 스레드에서도 루틴 이라는 단위로 루틴간 협력이 가능하며, 동시성 프로그래밍을 지원하고 비동기 처리를 쉽게 도와주는 개념을 말한다.

동시성 이슈

  • 레이스 컨디션 : 두 개 이상의 ㅡㅅ레드가 동시에 공유 데이터에 엑세스하고 수정하려고 할 때 발생한다.

  • 데드락 : 두 개의 스레드가 서로를 기다리는 상황

  • 라이브락 : 두 개 이상의 스레드가 서로를 기다리는 상황이지만, 상태를 변경하려는 시도는 계속되는 상황

  • 스타베이션 : 특정 스레드가 자원에 대한 액세스를 영원히 얻지 못하고 대기 상태

자바의 동시성 이슈를 해결하기 위한 도구

  • Synchronized Block : sychronized

  • Volatile Keyword : volatile 키워드는 변수를 메인 메모리에 저장하도록 지시.

  • Atomic Classes : Java 원자성을 보장하는 클래스들을 제공.

  • Locks : Synchronized 키워드보다 더 세밀한 제어를 가능하게 한다.

  • ThreadLocal Class : ThreadLocal클래스는 각 스레드에 대해 별도의 변수 복사본을 유지

  • Executors and Thread Pools : 스레드 풀과 executor 프레임워크를 제공한다.

  • Futures and Callables : Future와 Callable 인터페이스는 비동기 계산의 결과를 나타내고, 스레드가 계산을 완료하면 결과를 얻을 수 있다.

  • Semaphores : 한 번에 특정 수의 스레드만이 특정 자원에 엑세스할 수 있도록 제한하는 데 사용된다.

  • CountDownLatch and CyclicBarrier : 이들은 스레드가 특정 지점에서 대기하도록 하여, 다른 스레드가 특정 작접을 완료할 떄 까지 기다림.