简介: AQS全称 AbstractQueuedSynchronizer,提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架。 ReentrantLock、Semaphore、CountDownLatch、FutrueTask,这些都是基于AQS构建的。 而AQS是 ...
分类:
编程语言 时间:
2019-12-04 23:40:01
阅读次数:
126
Java锁原理学习 为了学习Java锁的原理,参照ReentrantLock实现了自己的可重入锁,代码如下: 先上AQS的相关方法: 以下是自己实现的MyLock: 测试程序: ...
分类:
编程语言 时间:
2019-12-03 01:45:31
阅读次数:
107
(手机横屏看源码更方便) 引子 大家知道,我最近在招人,今天遇到个同学,他的源码看过一些,然后我就开始了AQS连环问。 我:说说AQS的大致流程? 他:AQS包含一个状态变量,一个同步队列……balabala……互斥锁balabala,共享锁balabala…… 我:AQS中除了同步队列,还有什么队 ...
分类:
其他好文 时间:
2019-10-31 00:18:07
阅读次数:
95
本文导读 生活中案例场景介绍 联想到 AQS 到底是什么 AQS 的设计初衷 揭秘 AQS 底层实现 最后的总结 当你在学习某一个技能的时候,是否曾有过这样的感觉,就是同一个技能点学完了之后,过了一段时间,如果你没有任何总结,或者是不经常回顾,遗忘的速度是非常之快的。 忘记了之后,然后再重新学,因为 ...
分类:
其他好文 时间:
2019-10-29 20:09:57
阅读次数:
195
ReentrantLock ReentrantLock是AQS中独占模式的一种实现。内部定义了一个继承了AQS类的Syn类。该类有两个子类。而Syn类定义模板方法lock()方法给子类去实现。其中一个子类是实现公平锁,另一个是实现非公平锁。 非公平锁的实现 非公平锁的实现很简单,通过CAS操作判断s ...
分类:
其他好文 时间:
2019-10-19 18:48:32
阅读次数:
86
https://www.google.com/search?q=%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3&rlz=1C9BKJA_enHK834HK834&oq=%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A ...
分类:
其他好文 时间:
2019-10-19 12:52:34
阅读次数:
52
Base16 Base16编码使用16个ASCII可打印字符(数字0-9和字母A-F)对任意字节数据进行编码。Base16先获取输入字符串每个字节的二进制值(不足8比特在高位补0),然后将其串联进来,再按照4比特一组进行切分,将每组二进制数分别转换成十进制,在下述表格中找到对应的编码串接起来就是Ba ...
分类:
其他好文 时间:
2019-10-16 13:24:11
阅读次数:
125
一、内置锁sync 和 显示锁lock概念 1、synv锁又叫内置锁,不能中断,拿不到无限等待即阻塞; java自带关键字; 隐式可重入; 重入锁:锁对应对象要多次调用对应方法,如递归 2、 lock的lockinterruptiply意思是可中断的;语言层面的接口; 其实现类reentrantlo ...
分类:
其他好文 时间:
2019-10-15 00:06:36
阅读次数:
107
目录导引: 一、简介 二、源码解析(JDK8) 三、运用示例 一、简介 AQS(AbstractQueuedSynchronizer)的核心思想是基于volatile int state变量,配合Unsafe工具对其原子性的操作来实现对当前state状态值进行修改。 同步器内部依赖一个FIFO的双向 ...
分类:
其他好文 时间:
2019-10-13 22:16:12
阅读次数:
110
一、前言 最近复习发现AQS使用了模板方法,自定义同步器时需要重写几个AQS提供的模板方法,Spring的DefaultBeanDefinitionDocumentReader#doRegisterBeanDefinitions() 方法也使用了该设计模式,于是写篇文章加深理解。 模板方法模式的定义 ...
分类:
其他好文 时间:
2019-10-06 15:17:55
阅读次数:
99