반응형
조건변수
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 으로 열어주기만 하면 된다.
반응형
'Android' 카테고리의 다른 글
Android Invisible Button Action 투명 버튼 클릭 (0) | 2016.02.12 |
---|---|
Android Toolbar Shadow 제거 (0) | 2016.01.18 |
Android Color 값 설정하기 (0) | 2015.11.30 |
Android 에서 Fragment 내에 Webview 를 Add, remove 할때 Fatal signal 11 (SIGSEGV) (2) | 2015.11.17 |
NFC Tag 로 특정 앱을 실행하기 (Launch App From NFC Tag) (0) | 2015.11.17 |
댓글