Android

조건 변수 ConditionVariable()

클레인 2015. 11. 23.
반응형
조건변수.html

조건변수

android.od.ConditoinVariable
조건 변수란 lock 기능을 갖는 변수를 말한다.
* 모든 객체에는 모니터가 있는데 조건변수는 자체 모니터 lock 을 사용한다. 
* 조건 변수와 스레드의 근본적인 차이는 스레드 동기화는 하나의 스레드만이 lock 을 걸 수 있고 lock 을 걸은 스레드에 의해 lock 이 해제될 수 있지만 조건변수는 모든 스레드에 의해서 조건변수에 대해 open() 과 close() 메소드를 사용함으로써 조건변수를 열고 닫을 수 있다.
  • public boolean block(long timeout)

    • 변수 상태가 오픈될 때까지 또는 타임아웃의 시간이 경과될 때까지 현재 스레드는 block 한다. 타임아웃으로 인해 대기가 해제되었을때 false를 반환한다. 다른 스레드에 의하여 조건변수가 오픈되었을 경우 true가 반환된다.
  • public void close()

    • 조건 변수를 닫은 상태로 만든다. 닫힌 상태에서 block() 메소드를 호출한 모든 스레드는 모두 대기 상태로 유지가 된다.
  • public void open()

    • 조건변수를 오픈 상태로 만든다. 닫힌 상태에서 block() 메소드를 호출한 모든 스레드는 조건변수가 오픈 상태가 되면 대기를 해제한다.

이와 같은 조건 변수를 사용하여 아래와 같이 다수의 스레드 들에 대해서 조건 변수를 open 시킴으로써 일괄 종료 등의 작업이 가능하다.
특정 핸들러나 Timer 를 사용하지 않고도 아래처럼 반복적인 fixed Interval 작업이 가능하다.
모든 thread 의 정리를 하고 싶을 때는 조건 변수를 open 으로 열어주기만 하면 된다.

open

반응형

댓글