zoukankan      html  css  js  c++  java
  • JavaSE:使用Lock(锁)实现线程同步

    1.  基本概念

        <1>  从Java5中,开始提供了强大的线程同步机制 ----> 使用显式定义的同步锁对象来实现

        <2>  java.util.concurrent.locks.Lock接口: 控制多个线程对共享资源进行访问的工具

        <3>  该接口的主要实现类是 ReentrantLock类,该类拥有与synchronized 相同的并发性。

              在线程安全控制中,经常使用ReentrantLock类显式加锁和释放锁

    2.  常用方法

    ReentrantLock() 使用无参方式,构造对象
    void lock() 获取锁
    void unlock() 释放锁

    3.  使用示例 (AccountRunnableTest.java)

     

    4.  与synchronized方式的比较

        <1>  Lock是显式锁,需要手动实现开启和关闭操作,而synchronized是隐式锁,执行锁定代码后自动释放

        <2>  Lock只有:同步代码块方式的锁,而synchronized有:同步代码块方式 和 同步方法 两种锁

        <3>  使用Lock锁方式时,java虚拟机将花费较少的时间来调度线程,因此性能更好

  • 相关阅读:
    咖啡里的梦
    杨元庆精彩演讲
    鲍尔默演讲
    买房子的涉及到的一些费用说明
    未来是通胀的十年
    百名经济学家企业家88%认为当前通胀情况严重
    给陌生人写一封信
    晌午时的休憩
    34个实用确很多人不知道的偏方
    思念
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/14894036.html
Copyright © 2011-2022 走看看