美文网首页
JAVA_synchronized与同步锁的区别

JAVA_synchronized与同步锁的区别

作者: Shokka | 来源:发表于2018-08-21 11:22 被阅读0次
    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能获取到锁的状态

    锁的种类:

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

    相关文章

      网友评论

          本文标题:JAVA_synchronized与同步锁的区别

          本文链接:https://www.haomeiwen.com/subject/jpwkiftx.html