CODEDRAGON ㆍDevelopment/Java
lock()와 unlock( )를 통한 동기화블록
· synchronized키워드를 대체할 수 있는 방법입니다.
· Java Ver 5.0 이후부터 제공되는 동기화 방식입니다.
· lock 메소드와 unlock 메소드의 호출을 통해서 동기화 블록을 구성합니다.
· ReentrantLock 인스턴스 를 이용한 동기화 기법입니다.
· 임계영역 내에서 예외가 발생하거나 return문으로 빠져 나가게 되면 lock이 풀리지 않을 수 있으므로 unlock()은 try~catch()문으로 감싸는 것이 일반적입니다. try블럭내에서 어떤 일이 발생해도 finally블럭에 있는 unlock()이 수행되기 때문에 lock이 풀리지 않는 일은 발생하지 않습니다.
·
private final ReentrantLock syncObj = new ReentrantLock( );
void myMethod(int num){
syncObj.lock( );
//임계영역
syncObj.unlock( );
}
|
void myMethod(int num){
syncObj.lock( ); //다른 스레드가 진입못하게 잠금
try{
}finally{
syncObj.unlock( ); //다른 쓰레드가 진입하도록 잠금 해제
}
}//안정적인 구현 모델
|
'Development > Java' 카테고리의 다른 글
ReentrantLock과 Condition, 동기화 메소드 (0) | 2018.12.11 |
---|---|
synchronized블럭 vs ReentrantLock과 같은 lock클래스 (0) | 2018.12.11 |
ThreadGroup의 주요 메소드 (0) | 2018.12.11 |
스레드 그룹 일괄 interrupt() (0) | 2018.12.11 |
스레드 그룹 생성, 그룹에 새로운 스레드 추가하기 (0) | 2018.12.11 |