JUC并发编程学习笔记 (5)

CountDownLatch允许一个或多个线程等待直到其他一组线程都执行完操作后再继续执行的同步辅助类。

代码示例 public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); for (int i = 0; i < 5; i++) { new Thread(()->{ System.out.println(Thread.currentThread().getName()+"召唤完毕!"); countDownLatch.countDown(); },"火精灵"+i).start(); } //主线程等待其他线程执行完毕后再继续执行 countDownLatch.await(); System.out.println("绿儿指挥所有火精灵发起进攻!"); } /**输出: * 火精灵0召唤完毕! * 火精灵4召唤完毕! * 火精灵3召唤完毕! * 火精灵2召唤完毕! * 火精灵1召唤完毕! * 绿儿指挥所有火精灵发起进攻! */ } CyclicBarrier 代码示例 public class CyclicBarrierTest { public static void main(String[] args) { //第二个Runnable barrierAction 参数是在CyclicBarrier完成等待后会执行的任务 CyclicBarrier cyclicBarrier = new CyclicBarrier(7, () -> { System.out.println("集齐7颗龙珠,神龙降世!"); }); for (int i = 1; i <= 7; i++) { new Thread(() -> { System.out.println("找到第" + Thread.currentThread().getName() + "颗龙珠了!"); try { cyclicBarrier.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } }, i + "").start(); } } /** * 找到第1颗龙珠了! * 找到第4颗龙珠了! * 找到第3颗龙珠了! * 找到第2颗龙珠了! * 找到第7颗龙珠了! * 找到第6颗龙珠了! * 找到第5颗龙珠了! * 集齐7颗龙珠,神龙降世! */ } Semaphore 代码示例 public class SemophoreTest { public static void main(String[] args) { //信号量,限流 Semaphore semaphore = new Semaphore(3); for (int i = 1; i <= 8; i++) { new Thread(()->{ try { semaphore.acquire(); System.out.println(Thread.currentThread().getName()+"抢到了停车位了!"); TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); }finally { semaphore.release(); System.out.println(Thread.currentThread().getName()+"离开停车位!"); } },"司机"+i).start(); } /**输出: * 司机1抢到了停车位了! * 司机3抢到了停车位了! * 司机2抢到了停车位了! * 司机1离开停车位! * 司机4抢到了停车位了! * 司机3离开停车位! * 司机2离开停车位! * 司机6抢到了停车位了! * 司机5抢到了停车位了! * 司机4离开停车位! * 司机7抢到了停车位了! * 司机8抢到了停车位了! * 司机5离开停车位! * 司机6离开停车位! * 司机7离开停车位! * 司机8离开停车位! */ } } 线程池

线程池:Executors创建线程池的三大方法、7大参数、4种拒绝策略

池化技术

好处:

1、降低资源的消耗

2、提高响应的速度

3、方便管理。

线程复用、可以控制最大并发数、管理线程

Executors创建线程池的三大方法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxsxy.html