AtomicInteger 和AtomicLong,线程安全计数类,通过CAS实现
悲观锁:认为每次操作都会修改数据,所以每次操作都会锁定数据,synchronize,reentranLock都是悲观锁实现
乐观锁:认为数据并发发生冲突的概率较小,每次操作不会锁定数据,在数据进行提交的时候,会判断在此期间是否被其他线程修改了,如果修改了就重试,没修改就提交。通过CAS实现,AtomicInteger就是乐观锁实现,里面的CAS操作是UnSafe包下的,都是本地方法
自旋和阻塞:
线程拿不到锁时候的两种操作,自旋是不放弃CPU,空转。阻塞是放弃CPU,进入阻塞状态,等待被唤醒。AtomicInteger就是自旋
AtomicBoolean和AtomicReference
应用于布尔值和对象的线程安全计数
AtomicStampedReference和AtomicMarkableReference
AtomicStampedReference解决CAS中的ABA问题,通过引入版本号机制来解决
AtomicMarkableReference解决布尔值ABA问题,不能解决,只能降低ABA发生概率
