초보개발자

[JAVA/Programmers] 동기화 메소드와 동기화 블록 본문

Language/JAVA

[JAVA/Programmers] 동기화 메소드와 동기화 블록

___yejin 2017. 10. 19. 15:45

출처: https://programmers.co.kr/learn/courses/9/lessons/274

공유객체가 가진 메소드를 동시에 호출 되지 않도록 하는 방법

- method 앞에 synchronized을 붙인다.

- 여러개의 쓰레드들이 공유객체의 method를 사용할 때 method에 synchronized가 붙어 있을 경우 먼저 호출한 method가 객체의 사용권(Monitoring Lock)을 얻는다.

- 다른 synchronized method들이 객체의 사용권을 가지고 있더라도, synchronized를 가지고 있지 않은 method는 중간 중간 호출된다.

- 모든 method에 synchronized를 붙이면, 마지막에 호출된 method는 너무 오래 기다리게 되므로, 동시에 호출됐을 때 문제가 될거 같은 부분만 synchronized(this){ } (동기화 블록)로 묶어줄 수 있다. 

Comments