①synchronized是Java内置关键字,在jvm层面,lock是个Java类;
②synchronized不能主动中断,只能等线程结束或异常,lock可以主动中断interrupt
③synchronized不需要释放锁,但是lock必须要在finally处手动释放锁,否则会造成线程死锁;
④synchronized的锁可重入,不可中断,非公平,而lock锁可重入,可中断,可公平
⑤synchronized不能知道是否获取锁,但lock可以通过trylock来知道是否获取锁;
⑥synchronized使用Object对象本身的wait 、notify、notifyAll调度机制,而Lock可以使用Condition进行线程之间的调度;