Android开发必看:CountDownLatch实现线程同步实战示例
CountDownLatch是Android中的一种线程同步工具,它允许一个或多个线程等待其他线程完成操作后才继续执行。 CountDownLatch的工作原理是,当一个线程调用CountDownLatch的await方法时,它会阻塞,直到其他线程调用CountDownLatch的countDown方法,使得await方法的计数器减1。当计数器减为0时,所有等待的线程都会被唤醒。 以下是一个简单的例子,展示了如何使用CountDownLatch进行线程同步: ```java import java.util.concurrent.CountDownLatch; public class MainActivity extends AppCompatActivity { private CountDownLatch latch = new CountDownLatch(1); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { try { // 这里是耗时操作 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } finally { // 当这个线程完成操作后,调用countDown方法,使得latch的计数器减1 latch.countDown(); } } }).start(); // 在主线程中,调用await方法,使得主线程阻塞,直到其他线程调用countDown方法 try { latch.await(); } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们创建了一个CountDownLatch对象latch,并设置了计数器为1。然后,我们创建了一个新的线程,这个线程会执行一个耗时操作。当这个线程完成操作后,它会调用latch的countDown方法,使得latch的计数器减1。在主线程中,我们调用latch的await方法,使得主线程阻塞,直到其他线程调用countDown方法。当计数器减为0时,主线程会被唤醒,继续执行后续的操作。 ######[AI写代码神器 | 426点数解答 | 2023-11-08 00:27:57]
- RealtimeMonitoringFragment 代码片段:Android 实时监控功能核心代码剖析(字节豆包 | 30点数解答 | 2024-10-12 10:31:18)294
- 揭秘:Android实时监控片段(RealTimeMonitoringFragment)代码实现(GPT | 531点数解答 | 2024-10-12 10:32:25)269
- AIDE编写Xposed软件:参考代码教你拦截Smail类方法名(阿里通义 | 649点数解答 | 2024-10-12 00:15:48)305
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)24
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- Python开发必懂:同步、异步、阻塞、非阻塞概念全解析(阿里通义 | 263点数解答 | 2023-11-08 00:56:38)235
- 智能电话窗口按钮1弹起:获取坐标与手机IMEI码待处理(GPT | 208点数解答 | 2024-09-12 16:36:31)353
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)265
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)263
- Android开发必看:CountDownLatch实现线程同步实战示例(阿里通义 | 426点数解答 | 2023-11-08 00:27:57)196
- 超详细!Java CountDownLatch 用法代码示例全解析(字节豆包 | 401点数解答 | 2024-08-07 14:11:51)167
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313