Android CountDownLatch的使用

来源:互联网 发布:mac 无法启动安全模式 编辑:程序博客网 时间:2024/06/07 11:21

在Android中我们可以使用CountDownLatch来进行线程的同步。它维护一个计数器,等待CountDownLatch的线程必须等到计数器为0时才可以继续。
我们可以在下面的场景中使用:在某个Thread使用的变量必须等UI线程中对它更新以后才可以使用。

    CountDownLatch mLatchTest;    private static final int GET_TEST_MSG = 100;    private boolean mTestFlag = false;    final Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == GET_TEST_MSG) {                //do something in ui thread                mTestFlag = true;                mLatchTest.countDown();            }        }    };    public void testThread(View v){        mTestFlag = false;        new Thread(new Runnable() {            @Override            public void run() {                Log.e("Test","Time = "+ SystemClock.uptimeMillis() +", mTestFlag = "+mTestFlag);                mLatchTest = new CountDownLatch(1);                mHandler.sendMessage(mHandler.obtainMessage(GET_TEST_MSG));                try {                    mLatchTest.await();                } catch (InterruptedException e) {                    e.printStackTrace();                    return ;                }                Log.e("Test","Time = "+ SystemClock.uptimeMillis() +", mTestFlag = "+mTestFlag);            }        }).start();    }
0 0
原创粉丝点击