参考文章:
详解synchronized与Lock的区别与使用
锁的种类
-
可重入锁
-
可中断锁
-
读写锁
-
公平锁
Synchronized 和 local 的区别
类别 | synchronized | Lock |
---|---|---|
存在层次 | Java关键字,JVM层面 | 是一个类 |
锁的释放 | 1. 以获得锁的线程执行万同步代码,释放锁。 2. 线程执行发生异常,jvm会让线程释放锁。 | 在finally中必须释放锁,否则会造成死锁 |
锁的获取 | 如果A线程获得锁,B线程等待,如果A线程阻塞,那B线程就会一直等待。 | 分情况而定,线程可以不用一直等待。 |
锁状态 | 无法判断 | 可以判断 |
锁类型 | 可重入、不可中断、非公平锁 | 可重入、可判断、可 公平可不公平 |
性能 | 少量同步 | 大量同步 |