zoukankan      html  css  js  c++  java
  • synchronize、Lock、ReenTrantLock 的区别

    synchronize 和Lock:

    1、synchronize 系java 内置关键字;而Lock 是一个类  

    2、synchronize 可以作用于变量、方法、代码块;而Lock 是显式地指定开始和结束位置

    3、synchronize 不需要手动解锁,当线程抛出异常的时候,会自动释放锁;而Lock则需要手动释放,所以lock.unlock()需要放在finally 中去执行

    4、性能方面,如果竞争不激烈的时候,synchronize 和Lock 的性能差不多,如果竞争激烈的时候,Lock 的效率会比synchronize 高

    5、Lock 可以知道是否已经获得锁,synchronize 不能知道。Lock 扩展了一些其他功能如让等待的锁中断、知道是否获得锁等功能;Lock 可以提高效率。

    6、synchronize 是悲观锁的实现,而Lock 则是乐观锁的实现,采用的CAS 的尝试机制

    -------------------------------------------------------------------------------------------------

    synchronize 和 ReenTrantLock:

    除开上面和Lock 的区别,还有一下的一些区别:

    1、ReenTrantLock 可以中断锁的等待,提供了一些高级功能

    2、多个线程在等待的时候,可以提供公平的锁;默认的是非公平锁,性能会比公平锁好一些;

    3、ReenTrantLock 可以绑定多个锁条件

  • 相关阅读:
    20 数组和指针
    19 数组、指针
    18 # 和 ##
    17 pragma
    4 类族结构的改进
    css常用标签
    帝国cms 通过文章的id获取信息
    帝国cms 获取一条数据,但是从第二条开始获取
    帝国cms 描述和关键词动态获取
    导入高德地图快捷链接导入方法
  • 原文地址:https://www.cnblogs.com/drafire/p/10660758.html
Copyright © 2011-2022 走看看