CountDownLatchCyclicBarrierSemaphore

Posted 亮子zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CountDownLatchCyclicBarrierSemaphore相关的知识,希望对你有一定的参考价值。

CountDownLatch   康当辣吃
CountDownLatch(i int)
让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒
CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),
当计数器的值变为零时,因调用了await方法被阻塞的线程会被唤醒,继续执行。

public static void main(String[] args) throws Exception
     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  塞克来克 拜尔优
作加法
 

public static void main(String[] args)
        CyclicBarrier cyclicBarrier=new CyclicBarrier(parties:7,()->System.out.println("*************召唤神龙"););
        for (int i=1;i<=7;i++)
           new Thread(()->
                System.out.println(Thread.currentThread().getName()+"\\t 收集到第:"+i+"龙珠"); 
                try
                   cyclicBarrier.await();
                catch(InterruptedException e)
                   e.printStackTrace();
                catch(BrokenBarrierException e)
                   e.printStackTrace();
                
           ,String.valueOf(i)).start();
     

Semaphore  三么付
信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。

Semaphore semaphore = new Semaphore(permits:3);
  for(int i=1;i<=6;i++)
      new Thread(()->
           try
               semaphore.acquire();//进  饿快尔
               System.out.println(Thread.currentThread().getName()+"\\t 抢到车位");
               tryTimeUnit.SECONDS.sleep(timeout:3);catch(InterruptedException e)e.printStackTrace();
               System.out.println(Thread.currentThread().getName()+"\\t 停3秒离开车位");
           catch(InterruptedException  e)
               e.printStackTrace();
           finally
               semaphore.release();//释放   蕊力思
           
      ,String.valueOf(i)).start();
  

 

以上是关于CountDownLatchCyclicBarrierSemaphore的主要内容,如果未能解决你的问题,请参考以下文章