• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

lock 객체 질문

24.03.26 22:44 작성 조회수 104

0

lock 인터페이스를 사용할 때 해당 클래스 인스턴스 변수로 선언하는데 이렇게 되면 선언한 클래스에 대한 고유 락을 가지는건가요?

synchronized와 같은 방식과 같다면 상관없는데

또 다른 방식으로 생각해야 하나 싶어서요

답변 1

답변을 작성해보세요.

0

그렇지 않습니다.

보통 lock 을 사용해서 특정 락 객체를 생성하고, 그 락 객체를 사용하여 동기화를 수행합니다

그러나 synchronized 는 synchronized 를 선언한 해당 메소드나 블록이 속한 객체에 대한 락을 얻어서 사용합니다

그래서 lock 인터페이스의 인스턴스 변수들은 직접적으로 락을 관리하며 락을 획득하고 해제하는 방법을 명시적으로 제어할 수 있지만 그 인스턴스 변수 자체가 클래스에 대한 고유한 락을 나타내는 것은 아닙니다.

 

seunghoonL님의 프로필

seunghoonL

질문자

2024.03.28

감사합니다. 그러면

synchronized은 인스턴스 메서드에 붙었을 경우

그 해당 인스턴스에 대한 락을 사용하게 되고

Lock 객체 선언 시에는 이 Lock 객체에 대한

고유한 락을 사용하는거로 이해하면 될까요

그리고 최초 획득한 락 객체의 락을 가진 스레드만이 먼저 임계영역에서 작업을 하는거구요