作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在满足两个条件时执行一段代码。
对于 1),我只是在 Activity 的 onCreate() 中启动一个 AsyncTask,在 doInBackground 中查询 DB 以获取主题文本并将其存储在 Activity 的成员变量中。
对于 2),我向 UI 线程发布了一个 Runnable,在 run() 中,我查询 View 的维度并将其存储在 Activity 的成员变量中。也在 onCreate() 中完成。
无法保证哪一个(1 或 2)会先完成。
因此我的问题是,等待 1 和 2 完成的推荐模式是什么在执行一段代码之前?
最佳答案
我想你可以使用 CountDownLatch
旨在解决此类问题。
首先你需要在代码中的某处创建一个锁存器,在 1) 和 2) 之前的某处
CountDownLatch latch = new CountDownLatch(2); // wait for 2 threads;
在你的每个 Action 中,当它完成时,在 latch
实例上调用一个 countDown
latch.countDown();
在某些情况下,您的两个线程都必须完成,在 latch
实例上调用 await
latch.await(); // Will block. Will resume after both thread are completed
关于android - 在执行一段代码之前确保两个线程都执行完,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10512752/
我是一名优秀的程序员,十分优秀!