并发编程
2020-07-21 10:26:21 82 举报
AI智能生成
JAVA并发编程
作者其他创作
大纲/内容
并发容器
ConcurrentHashMap
使用
实现
基本思想
预备知识
Hash
位运算
jdk1.7
构造方法
如何定位
get方法
put方法
扩容
jdk1.8
构造方法
如何定位
get方法
put方法
扩容
其他并发容器
ConcurrentSkipListMap等
ConcurrentLinkedQueue
写时复制容器
阻塞队列
概念
生产者消费者模式
常用方法
常用阻塞队列辨析
·ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。
·LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。
·PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。
·DelayQueue:一个使用优先级队列实现的无界阻塞队列。
·SynchronousQueue:一个不存储元素的阻塞队列。
·LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
·LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
·LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。
·PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。
·DelayQueue:一个使用优先级队列实现的无界阻塞队列。
·SynchronousQueue:一个不存储元素的阻塞队列。
·LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
·LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
延时队列实战
阻塞队列实现原理
线程池
什么是线程池?为什么要用线程池?
实现一个我们自己的线程池
JDK中的线程池
线程池的创建
提交任务
关闭线程池
线程池工作机制
合理配置线程池
系统为我们预定义的线程池
FixedThreadPool
含义
使用场景
内部方法辨析
SingleThreadExecutor
含义
使用场景
内部方法辨析
CachedThreadPool
含义
使用场景
内部方法辨析
WorkStealingPool
含义
使用场景
内部方法辨析
ScheduledThreadPoolExecutor
含义
使用场景
内部方法辨析
Executor框架
CompletionService
使用
优点
并发安全
类的线程安全
如何做到类的线程安全
无状态
让类不可变
栈封闭
volatile
加锁和CAS
安全的发布
TheadLocal
线程不安全引发的问题
死锁
原因
表现
检测和解决
活锁
多线程程序性能和思考
影响性能的因素
减少锁的竞争
线程安全的单例模式
如何让双重检查锁定安全
懒汉式
饿汉式
实战项目(2个)
并发任务执行框架
需求的产生和分析
需要做什么
封装多线程,屏蔽细节
保存任务的上下文
自动清除已完成和过期任务
具体实现
可查询进度的并发任务执行框架
应用性能优化实战
项目简介
项目分析,为何优化
分析和改进
架构改进
单服务改进
如何继续改进
带来的启示
JMM和底层实现原理
现代计算机物理上的内存模型
概念
带来的问题
Java内存模型(JMM)
JVM对Java内存模型的实现
带来的问题
重排序
类型
依赖性
as-if-serial
重排序带来的问题
内存屏障
临界区
Happens-Before
定义
规则
volatile的内存语义
概念和深入理解
内存语义的实现
重排序规则
内存屏障插入策略
锁的内存语义
final的内存语义
volatile的实现原理
synchronized的实现原理
线程基础、线程之间的共享和协作
基础概念
CPU核心数,线程数
CPU时间片轮转机制
什么是进程和线程
什么是并行和并发
高并发编程的意义、好处和注意事项
Java中线程基础
启动和终止线程
两种启动线程的方式
理解中断
如何安全的终止线程
线程再认识
线程常用方法
线程的状态
线程的优先级
Demon线程
Run和Start区别
线程间的共享
synchronized
对象锁
类锁
volatile
ThreadLocal
线程间协作
等待和通知机制
Wait,Notify/NotifyAll
等待和通知的标准范式
notify和notifyAll应该用谁
Join方法
调用yield() 、sleep()、wait()、notify()等方法对锁有何影响?
线程的并发工具类
Fork/Join
什么是分而治之?
工作密取
使用的标准范式
概念图
CountDownLatch作用、应用场景和实战
CyclicBarrier作用、应用场景和实战
CountDownLatch和CyclicBarrier辨析
Semaphore作用、应用场景和实战
Exchange作用、应用场景和实战
Callable、Future和FutureTask
原子操作CAS
CAS的原理
CAS的问题
ABA问题
开销
只能保证一个共享变量的原子操作
原子操作类的使用
基本类型
数组
引用
带版本戳
显式锁和AQS
显式锁
Lock接口、核心方法和使用
Lock接口和synchronized的比较
ReentrantLock
可重入锁
锁的公平和非公平
ReentrantReadWriteLock
ReadWriteLock接口
使用场景
Condition接口
用处
用Lock和Condition实现等待通知
了解LockSupport
AbstractQueuedSynchronizer
什么是AQS?学习它的必要
AQS使用方式和其中的设计模式
了解其中的方法
实现一个自己的独占锁
深入源码
AQS中的数据结构
节点在同步队列中的增加和移出
独占式同步状态获取与释放
共享式同步状态获取与释放
Condition分析
等待队列
await方法
signal方法
了解ReentrantLock的实现
了解ReentrantReadWriteLock的实现
总结
0 条评论
下一页