Java thread에서의 Lock의 종류?

2020. 11. 24. 17:46Language/Java

반응형

 

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

반응형