Object Level Locking vs Class Level Locking

2024-05-28

동시성 프로그래밍을 할 때 여러 스레드가 공유 리소스에 액세스(접근)할 때 데이터의 일관성을 관리하기 위해 동기화는 필수이다.

이런 동기화를 하기 위해 잠금 메커니즘을 사용하게 되는데

잠금 메커니즘은 공유 리소스에 대한 액세스를 제한해 한 번에 하나의 스레드가 접근할 수 있도록 동기화를 달성?한다.

자바와 같은 객체 지향 프로그래밍 언어에는 객체 수준 잠금 & 클래스 수준 잠금의 두 가지 잠금 메커니즘이 존재한다.

객체 수준 잠금 Object Level Locking

개별 객체 마다 적용되는 잠금으로, 비정적 메서드나 코드 블록에서 synchronized 키워드를 사용

객체의 인스턴스 변수와 메서드에 대한 접근을 동기화하는 데 적합하다.

동일한 클래스에서 여러 객체에 대한 동기화를 달성할 수 있다.

클래스 수준 잠금 Class Level Locking

전체 클래스에 적용되는 잠금으로, 정적 메서드에서 synchronized 키워드를 사용

더 넓은 수준에서 동시성을 제어할 수 있지만, 객체 수준 잠금에 비해 오버헤드가 더 발생할 수 있다.