[Java] synchronized
Developments/Java / 2013. 7. 13. 11:47
멀티스레드에서 여러 스레드가 객체의 상태에 손상을 줄수 있으므로 해당 객체에 대한 접근을 제한하는...동시에 실행되어서는 안되는 critical section에 보호하기 위해 synchronized 를 사용한다.
A 쓰레드에서 작업하던 도중 B 쓰레드에게 제어권이 넘어갔을 때, A쓰레드가 작업중이던 공유데이터를 B쓰레드가 임의로 변경한다면 A쓰레드에게 제어권이 넘어갔을때 해당 공유데이터의 작업시 다른 결과가 나오는 문제가 발생할수 있다.
이를 방지하기 위한 일정의 Lock ... 즉, 접근 방지이다.!!
하나의 스레드만이 데이터 구조에 접근하는 방식이라면 굳이 해당 방식을 사용하지 않아도 된다.
//객체에 Lock을 걸때 synchronized(객체의 참조변수){ //Source Code... }
//메서드에 Lock을 걸때 public synchronized void lockTest(){ //Source Code... }
'Developments > Java' 카테고리의 다른 글
[Java] abstract(추상) Class와 Interface(인터페이스) (0) | 2013.12.08 |
---|---|
[Java] Constructor (생성자) (0) | 2013.12.08 |
[Java] 생성자가 있는 상위 클래스 서브클래스에서 상속받기 (0) | 2013.07.13 |
[Java] 가변인자(인수) variable argument (0) | 2013.07.13 |