首页 > 编程语言 > 详细

并发编程 线程安全——Lock

时间:2021-08-12 11:56:48      阅读:10      评论:0      收藏:0      [点我收藏+]

lock

概述:

本质上Lock仅仅是一个接口
Lock有三个实现类

  • ReentrantLock:表示重入锁 它是唯一一个实现了Lock接口的类
    重入锁指的是线程在获得锁之后 再次获取该锁不需要阻塞 而是直接关联一次计数器增加重入次数
  • ReentrantReadWriteLock:重入读写锁 它实现了ReadWriteLock接口
    在这个类中维护了两个锁
    • ReadLock:读锁
    • WriteLock:写锁

示例:

Lock l = ...; //根据不同的实现Lock接口类的构造函数得到一个锁对象 
l.lock(); //获取锁位于try块的外面 
try { 
      // 代码块
} finally { 
     l.unlock(); // 推荐把锁放到finally中 这样不管怎样都会被释放
}

接口方法:

//尝试获取锁,获取成功则返回,否则阻塞当前线程
void lock(); 

//尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛出异常 
void lockInterruptibly() throws InterruptedException; 

//尝试获取锁,获取锁成功则返回true,否则返回false 
boolean tryLock(); 

//尝试获取锁,若在规定时间内获取到锁,则返回true,否则返回false,未获取锁之前被中断,则抛出异常 
boolean tryLock(long time, TimeUnit unit) throws InterruptedException; 

//释放锁
void unlock(); 

//返回当前锁的条件变量,通过条件变量可以实现类似notify和wait的功能,一个锁可以有多个条件变量
Condition newCondition();

推荐文章:一文带你理解 Java 中 Lock 的实现原理

并发编程 线程安全——Lock

原文:https://www.cnblogs.com/AnotherVincent/p/15131449.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!