线程操作经常用到wait和notify,用起来稍显繁琐,而Android给我们封装好了一个ConditionVariable类,用于线程同步。提供了三个方法block()、open()、close()。
void block()
阻塞当前线程,直到条件为open
void block(long timeout)
阻塞当前线程,直到条件为open或超时
void open()
释放所有阻塞的线程
void close()
将条件重置为close
一个简单的例子
void testConditionVariable(){
final ConditionVariable startDone = new ConditionVariable();
new Thread() {
@Override
public void run() {
try {
//比如这里有一个耗时间的操作,如open camera
} catch (RuntimeException e) {
}
startDone.open();
}
}.start();
if (!startDone.block(5000)) {
//主线程在此阻塞,等待startDone.open(),
//如果5000ms后依旧没有执行startDone.open()
//则,startDone.block返回false;
//执行了startDone.open()后,startDone.block返回true;
}
}
更多的 可以参考android官网 http://developer.android.com/reference/android/os/ConditionVariable.html