「java并发编程」ReentrantLock可重入读写锁

深藏阁楼爱情的钟 2023-09-29 03:59 73阅读 0赞

115b100d678542c9a131802de484655e.png

  • 一、ReentrantLock可重入锁
  • 二、ReentrantReadWriteLock读写锁
  • 三、读锁之间不互斥

一、ReentrantLock可重入锁

可重入锁ReentrantLock 是一个互斥锁,即同一时间只有一个线程能够获取锁定资源,执行锁定范围内的代码。这一点与synchronized 关键字十分相似。其基本用法代码如下:

  1. Lock lock = new ReentrantLock(); //实例化锁
  2. //lock.lock(); //上锁
  3. boolean locked = lock.tryLock(); //尝试上锁
  4. if(locked){
  5. try {
  6. //被锁定的同步代码块,同时只能被一个线程执行
  7. }finally {
  8. lock.unlock(); //放在finally代码块中,保证锁一定会被释放
  9. }
  10. }

通过lock函数获取锁,通过unlock函数释放锁。非常重要的是,需要把需要同步执行的代码放入 try/finally 代码块中,并在finally中将锁释放。ReentrantLock可重入锁,即:(lock/unlok)动作里面可以嵌套(lock/unlock),针对同一个锁可以多次嵌套使用,不会产生死锁。但是lock函数与unlock函数在代码中必须成对出现,否则会出现死锁

二、ReentrantReadWriteLock读写锁

发表评论

表情:
评论列表 (有 0 条评论,73人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java并发--ReentrantLock

    重入锁 重入锁ReentrantLock,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择。