1.3.1AQS抽象队列同步器详解
1.同步锁的本质-排队
自己实现(独享锁)
2.AQS抽象队列同步器
AQS!=Lock,但是可以实现Lock。(AQS大量用到了CAS)
通过对比源码,发现可以将上面自己写的独享锁封装起来
写个AQS-独享锁
(模板方法,设计好骨架,具体实现由子类来完成)
独享锁 实现抽象的AQS的方法
3.资源占用流程
信号量和栅栏和倒计数器
4.Sempaphore
写个AQS-共享锁
信号量
4.CountDowmLatch
5.CyclicBarrier
示例:
1.3.2并发容器类Map-J.U.C并发编程包详解
1.实现hashMap分析
以上为jdk1.7里的内容,1.8版本没有segments(分段锁,相当于固定的锁,不能扩容 ),通过CAS机制。下图:
2 .ConcurrentSkipListMap
3.使用链表存储
1.3.3并发容器类list_set_queue
1.List
2.Set集合
3.Queue API
1.3.4Fork_Join框架详解
1.Fork_Join作用
2. 意图梳理
3.应用场景,查询多个系统数据
优惠券等经常变动的消息,在一个系统中。用户基本信息等,在另一个系统。
4.代码示例
(1)调用接口,耗时→用多线程改造
ForkJoin工作窃取:每个线程有一个属于自己的队列,当自己的队列没有任务的时候,会窃取有任务的队列,帮助 它执行任务。
冲突低;
实现思路
(2)使用场景
定义一个fork join pool
线程数量和CPU核数差不多
非阻塞处理non blocking
纯内存操作、数据计算
(3)用countDowmLatch改造
【FutureTask原理及多线程知识扩展】
1.Future
2.FutureTask应用
代码执行:
futureTask实现步骤:
call方法运行在run()方法里面