您的位置:首页 > 移动开发 > Android开发

Android CountDownLatch的使用

2015-11-05 11:38 281 查看
在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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: