멀티스레드 환경에서 여러 스레드가 공유 자원(변수, 객체, 파일 등)에 동시에 접근할 때, 데이터의 일관성을 유지하고 Race Condition을 방지하는 기술
synchronized 키워드synchronized 키워드를 사용하여 동기화 가능synchronized 키워드를 메소드 선언에 붙여 사용synchronized 블록으로 감싸서 동기화synchronized(this) 사용synchronized의 한계ReentrantLock 사용ReentrantLock을 사용한 동기화synchronized보다 정교한 락 제어 가능tryLock()lockInterruptibly()ReentrantLock vs synchronized 비교| 항목 | synchronized | ReentrantLock |
|---|---|---|
| 락 제어 방식 | 암묵적 | 명시적 (lock() / unlock()) |
| 정교한 제어 | 불가능 | 가능 (tryLock(), lockInterruptibly()) |
| 공정성 설정 | 불가능 | 가능 (new ReentrantLock(true)) |
| 메소드 간 동기화 적용 | 어려움 | 가능 |
| 코드 복잡도 | 낮음 | 높음 |
| 성능 | 간단한 경우 유리 | 복잡한 경우 유리 |