1.lock是一个接口,而synchronized是java的一个关键字
2.synchronized异常会释放锁,lock异常不会释放锁,所以一般用try catch包起来,finally中写unlock,避免死锁
3.Lock可以提高多个线程进行读操作的效率
4.synchronized关键字,可以放代码块,实例方法,静态方法,类上
5.lock一般使用ReenrantLock类作为锁,配合lock()和unlock()方法.在finally块中写unlock()以防死锁.
6.jdk1.6之前synchronized低效,jdk1.6之后synchronized高效
参考链接
synchronized与Lock的区别