Android CountDownLatch的使用
16lz
2021-01-23
在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(); }