高并发相关(一)
1. volatile : a.不保证原子性 b.可见性 c.禁止指定重排
2.JMM : java内存模型
3.单例模式: DCL(双端检索机制)double check lock
高并发下可以 volatile+DCL 实现单列模式
4.自旋锁 /CAS(比较and交换) 底层 unsafe 可直接调用操作系统(native)
CAS的缺点:a.循环时间长,cpu开销大 b.只保证一个原子变量 c.引来aba 问题(使用AtomicReference原子引用类型)
5.atomicInteger 原子/ cas调用的 getAndIncrement (在原语中执行,必须连续,不允许被打断)
6.ArrayList,HashSet,HashMap都是线程不安全,多线程下会出现并发修改异常,concurrentModifctionException,要实现线程安全,用collections.synchronizedList(),或者 CopyOnWriteArrayList(写时复制)
7.CountDownLatch(倒计时减法),cyclicBarrier凑齐7龙珠(加法),Semaphore信号量(抢车位)