一、countDownLatch
1、计数器,调用await的线程等待计数器的扣除点都扣完了为0时候会继续往下执行;
1.2专门的初始化线程类:
1.2业务线程类:
1.3主线程最大最用是初始化了几个线程:
一个线程可以扣除多个扣除点;
二、CyclicBarrier
1、两个概念区别,CyclicBarrier自己带钥匙,人齐了屏障解除;
countDownLatch是等其他人用累计扣除所有扣除点,await的线程都继续执行;
2、代码实现
工作线程,sleep导致不同的线程不同时间到达barrier屏障,人齐了就放行:
3、
三、semaphore
1、
2、代码实现,获取和释放许可:
数据库连接也是资源,拿连接时,在用的连接acquire加1 , 闲着的连接则release减1;
释放连接相反:
连接池中,空位也是资源,useless的作用,没有空位无法添加连接资源进来:
结果:
四、exchange
1、阻塞方法,只能两个线程交换,先到等另外一个执行到exchange方法,到了两人呼唤exchange定义的泛型的变量;
五、