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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章