JUC知识点梳理
J.U.C知识点梳理
java.util.concurrent:提供了并发编程的解决方案
- CAS是java.util.concurrent.atomic包的基础
- AQS是java.util.concurrent.locks包以及一些常用类比如Semophore,ReentrantLock等类的基础
J.U.C包等分类
- 线程执行器executor
- 锁locks
- 原子变量类atomic
- 并发工具类tools
- 并发集合collections
并发工具类
闭锁:CountDownLatch
- 让主线程等待一组事件发生后继续执行
- 事件指CountDownLatch里的countDown()方法
- demo:
栅栏:CyclicBarrier
- 等待其他线程,且会阻塞自己的当前线程,所有线程必须同时到达栅栏位置后,才能继续执行
- 所有线程到达栅栏处,可以触发执行另一个预先设置的线程
- demo:
信号量:Semaphore
- 控制某个资源可以被同时访问的线程个数
- demo:
交换器:Exchanger
- 两个线程到达同步点后,互相交换数据
- demo:new了只有两个线程的线程池,最后线程数据进行了交换。
BlockingQueue:提供可阻塞的入队和出队操作
主要用于生产者-消费者模式,在多线程场景时生产者线程在队列尾部添加元素,而消费者线程则在队列头部消费元素,通过这种方式能够达到将任务的生产和消费进行隔离的目的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alfred的小站!