文章:https://www.cnblogs.com/baizhanshi/p/6419268.html
https://blog.csdn.net/u012403290/article/details/64910926?locationNum=11&fps=1
一、synchronized是一个关键字,是jvm里面对方法或代码块进行加锁。Lock是一个类,提供了比synchronized更加灵活的功能。
二、synchronized对修饰的代码块进行加锁、解锁;Lock必须显示的unLock解锁,否则可能造成死锁。
三、synchronized特点:可重入,不可中断,非公平
Lock特点:可重入,可中断,可公平
可重入:method1和method2都是加锁的方法,method1中调用method2,不需要重新获取锁
可中断:线程1占用了锁,线程2请求锁请求不到处于阻塞状态,这时候,如果锁是Lock锁的话,可以对线程2进行interrupt(加锁时要用lockInterruptibly方法)
公平锁:线程获取锁的顺序与线程请求锁的顺序一致,即先请求的先获取
四、Lock可分为读锁和写锁
读锁是共享锁,写锁是互斥锁。如果多个线程都是获取读锁,可以同时并发执行。