01AQS简介01什么是AQSAQS全称为AbstractQueuedSynchronizer,就是抽象队列同步器。AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同步器,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件。02AQS的核心思想如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共
分类:
其他好文 时间:
2020-10-30 12:03:44
阅读次数:
18
本文承接上一篇文章:AQS-共享模式分析 概述 CountDownLatch是一个同步计数器,他允许一个或者多个线程在另外一组线程执行完成之前一直等待,基于AQS共享模式实现的,下面就先举一个简单例子,从例子入手分析CountDownLatch的原理。 例子 public class CountDo ...
分类:
其他好文 时间:
2020-09-17 13:47:28
阅读次数:
28
无锁 乐观锁(非阻塞) 共享模式之无锁 CAS 与 volatile 原子整数 原子引用 原子累加器 Unsafe CAS无锁方案 CAS无锁主要看重三个变量: 预估值 + 修改值 + 主存值 预估值: 主要用来判断是否等于主存值, 是则将修改值修改到主存值中 修改值: 即将需要修改的新值, 修改到 ...
分类:
其他好文 时间:
2020-06-26 18:28:48
阅读次数:
57
J.U.C AQS 原理 全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取 锁和释放锁 getState - 获取 state 状态 se ...
分类:
其他好文 时间:
2020-06-26 18:09:03
阅读次数:
50
一.Semaphore是什么 Semaphore 是一个计数信号量,必须由获取它的线程释放。用于管理一组资源,内部是基于AQS的共享模式。它相当于给线程规定一个量从而控制允许活动的线程数。 Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的sy ...
分类:
其他好文 时间:
2020-05-14 19:22:25
阅读次数:
47
1.简介 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作。AQS 是很多同步器的基础框架,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于 AQS ...
分类:
其他好文 时间:
2020-03-22 19:22:40
阅读次数:
75
概括 AQS框架数据结构是一个先进先出的双向队列,当多个线程进行竞争资源时,那些竞争失败的线程会加入到队列中。他向上层提供了很多接口,其中一个是acquireShared获取共享模式的接口。本文将会根据这个接口一步步分析,获取资源失败的线程是怎么进入到队列中的,进入到队列中又是怎么出队列再次竞争资源 ...
分类:
其他好文 时间:
2020-02-29 18:50:39
阅读次数:
165
Reentrantlock Reentrantlock在AQS源码解析中已经捎带着解析过了,这里不再提及 CountDownLatch CountDownLatch在AQS源码解析中也已经解析过了,这里同样不再提及 CyclicBarrier CountDownLatch 基于 AQS 的共享模式的 ...
分类:
其他好文 时间:
2020-02-12 22:21:05
阅读次数:
79
死锁:如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。 7.1 死锁特征 7.1.1 必要条件 如果一个系统中以下四个条件同时成立,那么就能引起死锁。 互斥:至少有一个资源必须处于非共享模式,即一次只有一个进程可使用。如果另一个进程申请该资源,那么申请进程应等到该资源释放为 ...
分类:
其他好文 时间:
2020-01-06 09:28:36
阅读次数:
77
对象性能模式:面向对象很好地解决了抽象地问题,但是必不可免地要付出一定地代价。对于通常情况来讲,面向对象地成本大都可以忽略不计,但某些情况,面向对象所带来地成本必须谨慎处理。 典型模式:单件模式(Singleton)、共享模式(Flyweight)。 一、单件模式 1.动机 在软件系统中,经常有这样 ...
分类:
编程语言 时间:
2019-11-24 15:56:29
阅读次数:
66