>  Q&A  >  본문

Java에서 동기화된 잠금 코드 블록을 사용할 때 이 클래스는 싱글톤이어야 합니까?

메서드나 코드 블록을 잠그면 최대 하나의 스레드가 이 코드를 동시에 실행할 수 있습니다. 두 개의 동시 스레드가 동일한 개체 개체의 잠긴 동기화 코드 블록에 액세스하면 한 번에 하나의 스레드만 실행할 수 있습니다. 다른 스레드는 이 코드 블록을 실행하기 전에 현재 스레드가 이 코드 블록 실행을 완료할 때까지 기다려야 합니다.

그럼 문제는 두 스레드가 이 개체의 서로 다른 인스턴스에 액세스하는 경우 여전히 차단됩니까?입니다.

高洛峰高洛峰2670일 전911

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-06-28 09:24:12

    동기화는 다음 세 가지 방법으로 사용할 수 있습니다

    1. 잠글 개체를 지정하세요. 동기화된(인스턴스) {}와 유사합니다.

    2. 인스턴스 메소드에 직접적으로 작용합니다. 이는 현재 인스턴스를 잠그는 것과 동일합니다. 동기화 방법을 시작하기 전에 현재 인스턴스의 잠금을 획득해야 합니다.

    3. 정적 메서드에서 직접 작동합니다. 이는 동기화 방법에 들어가기 전에 현재 클래스를 잠그고 현재 클래스의 잠금을 획득하는 것과 같습니다.

    위 1, 2의 경우. 동일한 개체 또는 동일한 인스턴스인 경우에만 스레드를 차단해야 합니다.

    회신하다
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-28 09:24:12

    객체 인스턴스에 잠금이 추가됩니다. 서로 다른 개체에 추가된 잠금은 서로 영향을 주지 않습니다. 서로 다른 두 개체에 액세스하는 두 스레드는 서로를 차단하지 않습니다.

    회신하다
    0
  • 취소회신하다