AQS(AbstractQueuedSynchronizer)

主要思想
  1. 自旋:线程空转,循环等待锁释放(减少线程上线文切换次数,因为可能锁占用时间比较短,可能还没有线程上下文切换的时间长,所以可以通过自旋来加快代码的运行效率)
  2. LockSupport (阻塞 park,唤醒unpark,调用Unsafe的unpack 和 park方法)
  3. CAS(保证原子性 调用Unsafe的CAS原子操作)

简介:AQS是Java提供的一种实现阻塞锁和一系列依赖队列的同步器框架

基本思路:AQS中线程获取锁时,使用CAS算法进行比较,确保原子性,对象未则获取锁,加锁则自旋重试获取锁,到达自旋上限,则将线程进行阻塞加入同步队列等待锁释放,锁释放完成根据 公平还是非公平锁,再决定是一起竞争 还是按照优先队列来唤醒线程并获取锁,重复上面步骤,直到队列为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值