CAS:原子操作(compareAndSet)主要是使用底层的unsafe类。而unsafe类是一个native方法,根据硬件来实现原子操作,会自旋操作。知道成功为止。乐观锁
AQS:AbstractQueueSynchronizer 使用模板设计模式,该类为一个抽象类,实现独占锁。或者共享锁。需要重写其中的一部分方法,其使用了队列。维护整体锁的获取阻塞
独占锁:该锁只能被一个线程得到
共享锁:比如ReentrantReadWriteLock,其实现原理是根据int的偏移量(偏移16位)计算获取锁的数量
codition:wait/notify/notifyAll和synchronized一起使用而condition就是和lock搭配使用但需要注意的是condition常用Signal方法因lock的阻塞队列是一个双向链表,使用SignalAll的时候会将整个队列的的头部开始逐步唤醒所有的waiter,但Synchronized需要常使用notifyAll,因其实CPU控制随机唤醒
ReentrantLock:可重入锁(如在递归模式下不会发生死锁),在获取锁的时候。该方法活判断当前线程是否是exclusiveOwnerThread,由此来实现可重入锁。释放锁的时候会。一直到到返回true为止