Language/Java
Java thread에서의 Lock의 종류?
태하팍
2020. 11. 24. 17:46
반응형
자바에서 2개의 Lock이 있는데
첫번째는
자바에서 thread간 동기화를 위해 synchronized 키워드를 사용하는것을 사용 합니다.
이런 synchronized 키워드를 사용하는 lock을 Intrinsic Lock 또는 Built-in Lock이라고 한다.
// Mutual Exclusion
public synchroized void intrinsicLockfunc(){
...
}
// Wait
synchronized(this){
...
this.wait();
...
}
// signal
synchronized(this){
...
this.notify();
...
}
두번째는
Java 1.5에서 java.util.concurrent.locks 패키지를 통해 제공되는 Explicit Lock이 있다.
// Mutual Exclusion
public void ExplicitLockFunc(){
lock.lock();
try{
...
}catch(Exception e){
...
} finally{
lock.unlock();
}
}
// wait
Condition condition = lock.newConditition();
lock.lock();
try{
condition.await();
}catch(Exception e){
...
} finally{
lock.unlock();
}
// signal
Condition condition = lock.newConditition();
lock.lock();
try{
...
condition.signal();
}catch(Exception e){
...
} finally{
lock.unlock();
}
Tip. 성능적인 면에서 Lock Contention이 자주 발생하지 않는다면 Intrinsic Lock을 사용.
자주 발생한다면 Explicit Lock 사용.
반응형