글
자바에서 어느 구역을 동기화하고 싶을 때는 (동시에 한 쓰레드만 구역을 처리하고 싶을 때는) synchronized 키워드를 사용하면 됩니다.
첫 번째로는 공유할 객체를 접근하는 메소드의 좌측에 synchronized 키워드를 붙이는 경우입니다. 이 경우에는, 메소드 전체를 동시에 하나의 쓰레드만 접근이 가능하고, 메소드가 사용중일 때는, 다른 쓰레드는 메소드가 종료될 때까지 기다려야만 합니다. 만약, static 메소드를 synchronized 하게 되면, 해당 클래스의 모든 instance 에 대해 동기화를 하게 됩니다. 이는, static 멤버 변수의 동기화를 할 때 주로 사용됩니다.
두 번째로는,
synchronized(인스턴스 변수 혹은 클래스 타입){
...
}
와 같이, synchronized 블럭을 사용하는 것입니다. 이는, 특정 영역만 동기화시키는 것으로, 메소드 동기화보다는 적은 영역을 동기화 할 수 있는 특징이 있습니다. 인스턴스 변수를 넘기면, 인스턴스 변수의 lock 을 사용하게 되고, 클래스 타입을 넘기면, 클래스 전체의 lock 을 사용하게 됩니다.
'4.1) OCJP > 관련 이론 및 문법' 카테고리의 다른 글
관련 이론 및 문법 - 상속관계에서 클래스형의 의미 (0) | 2015.07.13 |
---|---|
관련 이론 및 문법 - 상속관계에서 인스턴스의 대입 (0) | 2015.07.13 |
관련 이론 및 문법 - has a / is a (0) | 2015.07.08 |
관련 이론 및 문법 - 익명 클래스 (anonymous class) (0) | 2015.07.08 |
관련 이론 및 문법 - Runnable 인터페이스 (0) | 2015.07.08 |
관련 이론 및 문법 - Thread 클래스 (0) | 2015.07.07 |
관련 이론 및 문법 - 데드락 (deadlock) (0) | 2015.07.07 |
관련 이론 및 문법 - 응집도 (cohesion) (0) | 2015.07.01 |
관련 이론 및 문법 - 결합도 (coupling) (0) | 2015.07.01 |
관련 이론 및 문법 - 열거형 (enumeration) (0) | 2015.06.25 |
RECENT COMMENT