자바 다 중 스 레 드 synchronized 동기 화 방법 상세 설명

1.synchronized 방법 과 잠 금 대상
스 레 드 잠 금 은 대상 입 니 다.
1)A 스 레 드 는 object 대상 의 Lock 자 물 쇠 를 먼저 가지 고 있 으 며,B 스 레 드 는 object 대상 의 비 synchronized 형식 을 비동기 적 으로 호출 할 수 있 습 니 다.
2)A 스 레 드 는 object 대상 의 Lock 자 물 쇠 를 먼저 가지 고 있 으 며,B 스 레 드 가 이때 object 대상 의 synchronized 형식 을 호출 하 는 방법 은 기 다 려 야 합 니 다.즉,동기 화 입 니 다.
2.더러 운 읽 기(Dirty Read)
예시:

public class DirtyReadTest {
  public static void main(String[] args) {
    try {
      PublicVar publicVar = new PublicVar();
      ThreadA thread = new ThreadA(publicVar);
      thread.start();
      Thread.sleep(200);
      publicVar.getValue();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  static class ThreadA extends Thread {
    private PublicVar publicVar;

    public ThreadA(PublicVar publicVar) {
      this.publicVar = publicVar;
    }

    @Override
    public void run() {
      super.run();
      publicVar.setValue("B", "BB");
    }
  }

  static class PublicVar {
    public String username = "A";
    public String password = "AA";

    synchronized public void setValue(String username, String password) {
      try {
        this.username = username;
        Thread.sleep(1000);
        this.password = password;
        System.out.println("setValue method thread name = " + Thread.currentThread().getName() + "\tusername = " + username + "\tpassword = " + password);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }

    //    getValue      synchronized   ,       
    public void getValue() {
      System.out.println("getValue method thread name = " + Thread.currentThread().getName() + "\tusername = " + username + "\tpassword = " + password);
    }
  }
}
결 과 는 그림 과 같다.

3.synchronized 잠 금 재 접속
'재 입 자물쇠'의 개념 은:
자신 은 다시 자신의 내부 자 물 쇠 를 살 수 있다.예 를 들 어 1 개의 스 레 드 가 대상 의 자 물 쇠 를 얻 었 습 니 다.이때 이 대상 의 자 물 쇠 는 아직 풀 리 지 않 았 습 니 다.이 대상 의 자 물 쇠 를 다시 가 져 오 려 고 할 때 얻 을 수 있 습 니 다.다시 잠 그 지 않 으 면 잠 금 이 사라 집 니 다.
재 입 자물쇠 도 부자 류 계승 환경 에서 지원 합 니 다.계승 에서 자 류 는'재 입 자물쇠'를 통 해 부모 류 의 동기 화 방법 을 사용 할 수 있 습 니 다.
4、이상 발생,자동 잠 금 해제
스 레 드 에 이상 이 생기 면 현재 스 레 드 의 자 물 쇠 를 방출 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기