JUC(一)

本文深入探讨了AQS(AbstractQueuedSynchronizer)原理,包括其作为并发框架的基础,状态管理,FIFO等待队列,条件变量以及如何实现不可重入锁。文章还讨论了AQS的设计目标,如获取和释放锁的机制,超时获取,中断取消,独占和共享模式,以及线程的park & unpark机制。同时提到了AQS在Java并发工具类中的应用。
摘要由CSDN通过智能技术生成

1.AQS原理

1.1.概述

1>.AQS全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架;

2>.特点:

①.用state属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁;

  • getState: 获取state状态;
  • setStata: 设置state状态;
  • compareAndSetState: cas机制设置state状态;
  • 独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程访问资源;

②.提供了基于FIFO(先进先出)的等待队列,类似于Monitor的 EntryList;

③.条件变量来实现等待、唤醒机制,支持多个条件变量,(具体的某个条件变量)类似于Monitor的WaitSet;

3>.子类主要实现这样一些方法(默认抛出UnsupportedOperationException):

tryAcquire
tryRelease
tryAcquireShared
tryReleaseShared
isHeldExclusively

4>.获取锁的姿势

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值