Lock是通过自旋CAS和Unsafe.park/unpark挂起唤醒线程来实现的,而synchronized在jdk1.6后重量级锁也是通过CAS自旋以及park/unpark来实现的,都有进行用户态和内核态的切换,但是synchronized做了优化后在前面的偏向锁拿到锁的线程不会进行CAS自旋,而轻量级锁也只是进行CAS自旋不会阻塞挂起,只有膨胀到重量级锁后才会自旋CAS+park/unpark来挂起唤醒线程!所以理论上synchronized的效率应该比Lock快一点点,但是Lock提供的API比较简单方便!