LockSupport는 synchronized, wait()/notify()보다 더 유연하고 성능이 좋으며, 대부분의 고수준 동시성 유틸리티들의 기반이 되는 핵심 구성 요소.
LockSupport 클래스
java.util.concurrent.locks.LockSupport;
- 스레드 제어 위한 유틸리티 클래스. 매우 가볍고 유연함
- wait(), notify()가 synchronized 기반으로 작동하는 것과 달리 Lock이 필요 없다
- spin lock 구현 시 불필요한 CPU 사용 줄일수있고 성능 향상도 가능
주요 메서드
- LockSupport.park()
- 호출자 스레드를 waiting 상태로 전환
- LockSupport.unpark()
- 호출자 스레드를 runnable 상태로 전환
- LockSupport.parkNanos()
- 나노초 동안 TIMED_WAIT 상태로 전환 후 복귀
- LockSupport.parkUntil()
- 매개변수로 저달된 밀리초 까지 TIMED_WAIT