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;
}
}