synchronized是java关键字,这个关键字的识别是靠jvm来完成的,是虚拟机级别的
lock锁是API级别的,提供了相应的接口和对应的实现类,这个方式更灵活,表现出来的性能优于之前的方式
lock是显式锁(手动开启,手动关闭)synchronized是隐式的
lock只有代码块锁,synchronized有代码块和方法锁
使用lock,jvm将花费较少的时间来调度线程,性能更好,并且具有更好的扩展性(提供更多的子类)
wait和notify方法是必须放在同步方法或者同步代码块才能生效的
sleep和wait的区别:sleep进入阻塞状态没有释放锁,wait进入阻塞状态释放锁