文章目录

  • Lock 和 AQS
    • Lock接口
    • AQS
      • AQS同步器原理

Lock 和 AQS

Lock接口

Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition。

Lock接口提供的方法操作:

void lock()

获取锁,如果锁被使用会一直阻塞直至获取到锁。

void lockInterruptibly() throws InterruptedException

如果当前线程未被中断,则获取锁;如果锁可用,则获取锁,并立即返回,如果在加锁过程中发生了Interrupt中断操作,会抛出InterruptedException异常,并中断掉当前线程的加锁状态。

boolean tryLock()

尝试获取锁,仅在调用是锁为空闲状态才获取锁,如果锁是可用的返回true,如果锁不可用,该方法会立即返回false。

boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException

在指定时间内尝试性获取锁

void unlock()

释放锁。加锁释放锁是成对出现的,对应于lock()、tryLock()、tryLock(xx)、lockInterruptibly()等操作,如果成功的话应该对应一个unlock操作,这样可以避免死锁或者资源的浪费。

Condition newCondition()

返回绑定到Lock实例的新的Condition实例,可以进行线程间通信。

AQS

AQS(AbstractQueuedSynchronizer)是J.U.C下较复杂的一个类,提供了一个为实现依赖于先进先出 (FIFO)等待队列的阻塞锁相关同步器(信号量、事件,等等)提供一个框架。


通过上面查看类的子类的层级关系可知:AQSCountdownLatchReentrankLockThreadPoolExecutorReentrankReadWriterLockSemaphore实现的基础。


Lock 和 AQS相关推荐

  1. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)

    JUC分类 java并发编程中,关于锁的实现方式有两种synchronized ,Lock AQS--AbstractQueuedSynchronizer

  2. Java并发知识梳理(上):并发优缺点,线程状态转换,Java内存模型,Synchronized,Volatile,final,并发三特性,Lock与AQS,ReetrandLock

    努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事! 整个系列文章为Java并发专题,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常被问到.所以在学习过程中,记 ...

  3. 05.抽象队列同步器AQS应用之Lock详解

    AQS应用之Lock Java并发编程核心在于java.concurrent.util包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列.条件队列.独占获取.共享获取等,而这个行为 ...

  4. 万字超强图文讲解 AQS 以及 ReentrantLock 应用

    Java SDK 为什么要设计 Lock 曾几何时幻想过,如果 Java 并发控制只有 synchronized 多好,只有下面三种使用方式,简单方便 public class ThreeSync { ...

  5. 【学习笔记】抽象队列同步器AQS应用之BlockingQueue详解

    文章目录 什么是AQS框架 Aqs核心源码 基于aqs实现的锁 BlockingQueue ArrayBlockingQueue LinkedBlockingQueue DelayQueue Bloc ...

  6. 自己实现Lock(独享锁)

    在线程的通信中,可以通过线程的park和unpark对线程提供许可证,或者将线程禁用.利用此机制,我们可以自己实现锁 首先需要实现lock接口 主要需要实现的接口有lock() unlock() tr ...

  7. (四)【Java精选面试题】AQS底层架构设计原理(含答案)

    目录 1. 谈谈Lock锁底层实现原理 2. synchronized与lock锁之间区别 3. 谈谈LockSupport的用法 4. AQS核心参数有哪些呢 5. Lock锁基本实现原理 6. S ...

  8. 万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)

    写在前面 祝大家儿童节快乐????,保持童心,这篇文章作为儿童节礼物????送给大家.进入源码阶段了,写了十几篇的 并发系列 知识铺垫终于要派上用场了.相信很多人已经忘了其中的一些理论知识,别担心,我 ...

  9. Java并发之AQS源码分析ReentranLock、ReentrantReadWriteLock、Condition

    基于AQS的独享锁和共享锁的源码分析 基本概念说明 锁的基本原理思考 测试环境 实现方案1 实现方案2 独占锁:ReentrantLock源码分析 类依赖和类成员变量说明 加锁过程,入口方法:lock ...

最新文章

  1. Django:模型model和数据库mysql(一)
  2. 【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
  3. 结对项目——个人博客
  4. jinja Template
  5. 后台异常 - Content is not allowed in prolog
  6. 删除linux分区后grub,删除Ubuntu分区后GRUB救援问题!
  7. 怎么布置mysql数据库_MySQL数据库的安装,配置
  8. 锐捷睿易:扩大DHCP掩码导致AP不上线问题
  9. vue中的观察者模式
  10. 人工神经网络的基本原理及其应用
  11. python熊猫入门
  12. AHP层析分析法初步讲解
  13. 21.VIVO: Visual Vocabulary Pre-Training for Novel Object Captioning
  14. JavaWeb期末考试复习资料
  15. 运用调用函数判断是否为素数
  16. ASEMI整流二极管MUR60120PT并联电容有什么用
  17. 黑客借由入侵WordPress网站,使造访者计算机被植入恶意的Chrome扩充程序
  18. WebSocket 托盘服务 NotifyIcon 通知栏 Windows Forms
  19. python shell的无法保存_关于shell:如何保存Python交互式会话?
  20. 分布式系统复习(课后重点题型)

热门文章

  1. 关于gid 与groups 的区别
  2. RecastDemo用法
  3. 仿头条视频控件JzVideoPlayerStandard
  4. 从零实现 独立看门狗IWDG STM32的待机与唤醒,在待机过程中如何喂狗
  5. 高温预警c语言,高温预警 500°C的材料谁受得了?奥林巴斯能做到!
  6. 【工业智能】天泽智云揭秘:人工智能如何打造“无忧风场”
  7. 为什么Cookie泄露对“贱人”来说是要命的?
  8. CPU知识:主频、核心、线程、缓存、架构
  9. 【在线教育】课程科目入门
  10. 亚马逊平台儿童玩具CPC认证解决方案