JAVA_synchronized与同步锁的区别

2018-08-21  本文已影响0人  Shokka
synchronized:

https://www.jianshu.com/p/781bb4550840
第一次引用自己的博客,真刺激。

synchronized是关键字,是在JVM层面控制同步的。

https://blog.csdn.net/javazejian/article/details/72828483
底层如何控制同步

Lock:

Lock(同步锁),是在代码层面的,JDK层面的

https://www.cnblogs.com/aishangJava/p/6555291.html

Lock是一个接口,实现它的主要类有ReentrenLock,ReentrenReadWriteLock等

区别:

synchronized是JVM层面控制线程同步,而Lock是JDK层面

synchronized优点
1.JVM层面能轻松解决临界区的访问问题
2.synchronized抛出异常后线程能自动释放锁,由JVM控制,而Lock在出现异常后需要在catch块中或finally中主动释放锁(通常为finally块),否则会出现死锁情况。

Lock的优点
1.Lock能响应中断,而synchronized不能
2.Lock能处理读写操作的同步问题,例如读与写互斥,写与写互斥,而读与读不互斥的问题。而synchronized无法处理。
3.synchronized同步粒度要比lock大
4.Lock能获取到锁的状态

锁的种类:

中断锁,可重入锁(公平锁与非公平),公平锁,非公平锁,读写锁

上一篇下一篇

猜你喜欢

热点阅读