zoukankan      html  css  js  c++  java
  • sychronized 和 Lock的比较

    sychronized是在jvm层面上实现的,可以通过一些监控工具监控sychronized的锁定,而且在代码执行出现异常时,jvm会自动释放锁,但是使用Lock就不行,lock是通过代码实现的,最终需要在finally中释放。

    ReentranLock同样拥有synchronized相同的并发性和内存语义,不过它还多了锁投票、定时锁和中断锁,比如说对于中断锁,当一个线程等待了足够长的时间还没有等待到资源的话,就中断等待,去干别的事情;ReentranLock还可以使锁更加公平。

    在资源竞争不是很激烈的情况下,synchronized的性能要优于ReentranLock,但是在资源竞争很激烈的情况下,sychronized的性能会下降严重,而ReentranLock的性能则可以维持.

    同样在资源竞争激烈的情况下,Atomic会比ReentranLock的性能更优,不过Atomic有一个确定就是只能同步一个值,一段代码中只能出现一个Atomic的变量,多了就无法同步。

    而对于ReentranLock来说,则可以结合Condition实现多个谓词的并发对象,通过调用await()和signal()方法进行等待锁和释放锁。而在synchronized中是调用wait()、notify()、notifyAll()来进行线程间的通信。

  • 相关阅读:
    up6-chrome 45+安装教程
    HttpUploader7-授权码配置
    jsp-MySQL连接池
    WordPaster2-正式包布署说明
    HTTP文件上传插件开发文档-ASP
    HTTP文件上传插件开发文档-JSP
    eWebEditor9.x整合教程-Xproer.WordPaster
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
  • 原文地址:https://www.cnblogs.com/xulibing/p/6040937.html
Copyright © 2011-2022 走看看