code.7z
一、概述
CountDownLatch(门阀)设计模式定义:对多个线程进行捆绑,只有当所有线程执行完成,才表示本次执行完成。
比如:A,B,C 3个人相约在某某广场集合,准备一起去哪哪哪里。当天 A、B陆续到了,但是 C 由于堵车还没到,于是 A,B 就等 C,等 C 来了在一起出发。
实现原理: 实现某个类 CountDownLatch,维护了某个线程安全的数值,通过观察该数值来控制流程是否结束。
如:针对三个人的集合游玩,在类中维护线程安全的数值3,到达一人数值-1,当数值为 0 时,表示所有人都到了。
二、简单实现
模拟:A、B、C 三个人相约广场,三个人乘坐不同交通工具出发,当所有人都到达广场时,在一起出发。
针对这种情况存在两种情况:
- A、B、C 无论什么原因,只要其中有人没到就一直等人齐再出发
- A、B、C 无论谁到谁没到,在指定地点等待 一定时间,如果还没来就先出发了。