순차(Sequential) - 복수의 업무를 순차적으로 실행
병렬(parallel) - 복수의 업무를 동시에 처리
병행(concurrnt) - 한 개의 업무를 어떠한 순서로 처리하든 상관 없이 여러개로 분할하는 모습
데이터 레이스(data race) or 레이스 컨디션(race condition) - 쓰레드 A와 쓰레드 B가 경쟁 함으로써 예기치 않게 발생하는 상황
베타제어 or 상호베타(mutual exclusion) - 하나의 쓰레드가 어느 부분을 실행하고 있으면 다른 쓰레드가 그 부분을 실행할 수 없게 만듬
Synchronized
- 자바에서 베타제어를 가능하게 해주는 키워드
wait 셋 - 쓰레드 대합실
wait 셋 - 정지하고 있는 쓰레드들의 집합 notify, notifyAll, interrupt, wait메소드 타임아웃
wait - 스레드를 wait set에 들어가게 함. syncronized 블록안에서만 실행 가능함.
notify - wait 셋에 있는 쓰레드 한 개를 꺼냄
notifyAll - wait 셋에 있는 모든 쓰레드를 꺼냄
* 락을 가지지 못한 쓰레드가 wait, notify, notifyAll 메소드를 호출하면 java.lang.IIlegalMOnitorStateException 통보