在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();    }

更多相关文章

  1. Android线程与ANR
  2. Android开发实践:多线程编程小结
  3. Android开发实践:线程与异步任务
  4. android线程间通信之handler
  5. Android中子线程真的不能更新UI吗?

随机推荐

  1. 像数据库一样设计你的 redux 数据结构
  2. 对比Excel学习SQL(5):分组和子查询
  3. 使用 React 实现页面过渡动画仅需四个步
  4. LeetCode 题解 | 1312. 让字符串成为回文
  5. 剑指Offer 图解 | 寻找旋转排序数组中的
  6. 我就想问一句,约么?
  7. 从 O(N) 优化到 O(logN),你的第一想法是什
  8. 神器 VS Code,超详细Python配置使用指南
  9. 世界上有哪些代码量很少,但很牛逼很经典的
  10. LeetCode 题解 | 406 号问题:根据身高重建