CyclicBarrier和
2025年08月11日
一句话总结
检测死锁:使用jstack分析线程转储或通过ThreadMXBean的findDeadlockedThreads方法。
预防死锁:1.按固定顺序获取锁,破坏循环等待;2.避免嵌套锁;3.使用tryLock设置超时机制;4.减少同步代码块范围。
2025年08月11日
源码分析
countDownLatch()
构造方法中传入了一个int值,就是需要并发的线程数
进一步看是设置状态的值为count
2025年08月11日
CountDownLatch 和 CyclicBarrier 是 Java 并发编程中两个常用的同步工具类,它们都可以用于协调多个线程之间的执行顺序和状态,都可以理解成维护的就是一个计数器,但是这两者还是各有不同侧重点的:
2025年08月11日
前几天我们把 ReentrantLock的原理 进行了详细的讲解,不熟悉的同学可以翻看前文,今天我们介绍另一种基于 AQS 的同步工具——CountDownLatch。
2025年08月11日
CountDownLatch是一个同步工具类,用来协调多个线程之间的同步(即:用于线程之间的通信而不是互斥)。它允许一个或多个线程进入等待状态,直到其他线程执行完毕后,这些等待的线程才继续执行。
2025年08月11日
之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
今天主要介绍concurrent包的内容以及4大并发工具类。
2025年08月11日
CountDownLatch是Java并发包(java.util.concurrent)中一个非常实用的同步辅助工具类,它可以让一个或多个线程等待,直到其他线程完成一组操作。CountDownLatch使用一个计数器来实现线程间的同步,当计数器的值减至0时,等待的线程将被唤醒。它通常用于实现并发编程中的等待 - 通知模式。
2025年08月11日
案例:对账系统的业务是这样的,用户通过在线商城下单,会生成电子订单,保存在订单库;之后物流会生成派送单给用户发货,派送单保存在派送单库里。为了防止漏派送或者重复派送,对账系统每天还会校验是否存在异常订单。对账系统的处理逻辑很简单,系统流程图如下。目前对账系统的处理逻辑是首先查询订单,然后查询派送单,之后对比订单和派送单,将差异写入差异库。