第三阶段
1、原子类型详细讲解
AtomicInteger(compareAndSet 典型的cas对比算法)
释放锁的时候要考虑到多线程的情况,只有当前线程才可以关闭当前线程
1、可见性
2、有顺性
3、原子性
1、volatile修饰的变量,能保证前俩者
2、CAS算法,也就是CPU级别的同步指令,相当于乐观锁,它可以探测到其他线程对共享数据的变化情况
atomicInteger++
incrementAndGet()
for(;;){
int current = get();
int next = current +1;
if(compareAndSet(current,next))
return next;
}
最快失败策略
CAS轻量级锁,带来的一个严重问题,ABA问题
T1 T2
A A->B->A
链表,栈,后进先出
2、并发包工具
CountDwonLatch
3、Executors框架详细介绍
4、并发集合