并发编程(JMM+AQS+Synchronized+hashMap)
并发编程的流程图
1.Lock和Synchronized关键字的区别:
2.
线程与线程之间是不能直接同步变量。
下面是volatile底层操作。
AQS是AbustractQueuedSynchronizer的简称
- synchronized(基于JVM底层,基于C++,底层行为不可控 )
- AQS不利用任何jvm内置锁,基于java可变行为去实现同步
AQS的三板斧:CAS,自旋,LockSupportparkunpark
悲观锁:关键字synchronized,接口Lock的实现类。
乐观锁:CAS算法,例如AtomicInteger类的原子自增就是通过CAS自旋实现