1.lock是jdk 1.5后新增的
2.synchronized是修饰整个方法,整个代码块。lock可以在任何地方调用lock方法,再在想要结束的地方调用unlock()方
3.synchronized是java的底层关键字,是在JVM层面上实现,在代码执行异常时,jvm可以自动释放锁定。lock是java类,是通过代码实现来处理异常,所以在finanlly里面一定要调用unlock释放。
4.使用synchronized关键字,如果一个线程不释放锁,另一个会一致等待下去。使用lock,如果一个线程不释放锁,在等待很长时间后,可以中断等待去做其他事情。