-
동시에 실행 되는 것처럼 보이는 것
-
코틀린은 코루틴을 이용하여 동시성을 만족할 수 있다.
- 코루틴 : 싱글 스레드에서도 루틴 이라는 단위로 루틴간 협력이 가능하며, 동시성 프로그래밍을 지원하고 비동기 처리를 쉽게 도와주는 개념을 말한다.
-
레이스 컨디션 : 두 개 이상의 ㅡㅅ레드가 동시에 공유 데이터에 엑세스하고 수정하려고 할 때 발생한다.
-
데드락 : 두 개의 스레드가 서로를 기다리는 상황
-
라이브락 : 두 개 이상의 스레드가 서로를 기다리는 상황이지만, 상태를 변경하려는 시도는 계속되는 상황
-
스타베이션 : 특정 스레드가 자원에 대한 액세스를 영원히 얻지 못하고 대기 상태
-
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 : 이들은 스레드가 특정 지점에서 대기하도록 하여, 다른 스레드가 특정 작접을 완료할 떄 까지 기다림.