Study

synchronized란 무엇일까?

소사역 2020. 2. 14. 18:12

synchronized (동기화)

 

- synchronized는 하나의 객체에 여러 개의 객체가 동시에 접근해 처리하는 것을 막기 위해 사용합니다.

  (Thread의 불규칙적인 자원 공유를 막기 위해 사용)

 

- synchronized 식별자는 보통 메소드의 선언부에 쓰고 이 키워드가 붙은 메서드는 한 번에 하나의 스레드만 접근이 가능하며 메서드가 사용 중일 때  다른 스레드가 메서드를 호출하면 앞의 스레드가 종료될 때까지 기다려야 합니다.

 

Ex)

public String data = null;


public synchronized String getData() {

     if (data == null) {
         data = new String();
     }

     return data;
}

 

동기화 블럭 사용

Ex)

public String getData() {
     synchronized (this) {
          if (data == null) {
              data = new String();
          }

          return data;
     }

}