본문 바로가기
Language/Java

Java thread에서의 Lock의 종류?

by 태하팍 2020. 11. 24.
반응형

 

자바에서 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 사용.

 

참고 : bestugi.tistory.com/40  
          tourspace.tistory.com/54

반응형