package thread;
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public staticvoidmain(String[] args) throws InterruptedException {leaveClassroom();county();}
private staticvoidcounty() throws InterruptedException {
CountDownLatch countDownLatch=new CountDownLatch(6);for(int i =1; i <=6; i++){
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t 国被灭");
countDownLatch.countDown();}, CountryEnum.list(i).getRetMsg()).start();}
countDownLatch.await();
System.out.println(Thread.currentThread().getName()+"\t ******秦国一统华夏");}
private staticvoidleaveClassroom() throws InterruptedException {
CountDownLatch countDownLatch=new CountDownLatch(6);for(int i =1; i <=6; i++){
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t上完自习,离开教室");
countDownLatch.countDown();},String.valueOf(i)).start();}
countDownLatch.await();
System.out.println(Thread.currentThread().getName()+"\t ******班长最后关门走人");}}
CyclicBarrier
package thread;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierDemo {
public staticvoidmain(String[] args){
CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{
System.out.println("*****召唤神龙");});for(int i =1; i <=7; i++){
final int tempInt=i;
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t 收集到第"+tempInt+"颗龙珠");
try{
cyclicBarrier.await();}catch (Exception e){
e.printStackTrace();}},String.valueOf(i)).start();}}}