大纲:
1:volatile 是java 虚拟机提供的轻量级的同步机制
1.1:保证内存可见性
1.2:不保证原子性
1.3:禁止指令重排
2:JMM java内存模型
2.1:JMM关于同步的规定:
1 线程解锁前,必须把共享变量的值刷新回主内存中
2 线程加锁前,必须读取主内存的最新值到自己的工作内存(栈空间)
3 加锁解锁是同一把锁
2.2 可见性
2.3 原子性
2.4 有序性
3:单例
3.1 DCL(Doouble check lock 双端检锁机制)
添加volatile 禁止指令重排序
4:CAS 是什么
4.1 比较并交换
4.2 CAS底层原理?如果知道,谈谈你的Unsafe的理解
4.2.1:atomiclInteger.getAndIncreament()
4.2.2:Unsafe
4.2.3:CAS是什么
4.3 CAS 缺点
4.3.1:循环时间长开销很大
4.3.2:只能保证一个共享变量的原子操作
4.3.3:引出来ABA问题??
5:原子类AtomicInteger的ABA问题谈谈?原子更新引用知道码?
5.1:ABA问题是怎么产生的
5.2:原子引用
5.3:时间戳原子引用
6:集合类不安全问题 (我们知道ArrayList)是线程不安全的,请编码写一个不安全的案例并给出解决方案
并发修改异常
Set