ConditionVariable的简介和用法

        线程操作经常用到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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值