Java 的 synchornized 的优化以及原理 偏向锁:在对象头中记录线程ID,减少对象头中 Mark Word 与线程的锁记录的 CAS 操作,适合一个线程多次对对象加锁 轻量级锁:对象头中的 Mark Word 与线程的锁记录进行 CAS 操作,将 Mark Word 交换到锁记录中适合多个线程对对象加锁,但是线程之间的访问是交错进行的 重量级锁:多个线程同时对一个对象加锁,在对象的 Monitor 对象上面的一种排队机制;