ConditionVariable是Android提供的用于wait和notify的类,与java的wait()和notify()不同的地方在于ConditionVarible可以根据状态决定是否wait。

提供的方法

ConditionVariable有四个方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* 释放所以block的线程,且将状态设置为open,如果之后不调用close(),则调用block()不会阻塞。
*/
public void open();
/**
* 将状态设置为close。之后调用block()将会阻塞。
*/
public void close();
/**
* 如果状态不为open,则阻塞当前线程直到调用open(),否则直接返回。
*/
public void block();
/**
* 如果状态不为open,则阻塞当前线程直到调用open()或达到timeout时间,否则直接返回。
* 如果是因为open而返回,则返回true,如果是因为超市而返回,则返回false。
*/
public boolean block(long timeout);

实现

ConditionVariable的实现非常简单,根据mCondition变量的值决定当前是open还是close状态,mCondition等于true时为open,false时为close。调用block()时,仅在mCondition等于false时才会调用wait()。

总结

ConditionVariable简化了wait()和notify()的编写,如果需要根据情况决定是否wait,可以考虑使用ConditionVariable。