ReentrantLock 与 AQS 源码分析 1. 基本结构 重入锁 ReetrantLock,JDK 1.5新增的类,作用与synchronized关键字相当,但比synchronized更加灵活。ReetrantLock本身也是一种支持重进入的锁,即该锁可以支持一个 ...
分类:
其他好文 时间:
2018-03-31 22:15:45
阅读次数:
149
以下是本篇文章的大纲 1 synchronized和lock 1.1 synchronized的局限性 1.2 Lock简介 2 AQS 3 lock()与unlock()实现原理 3.1 基础知识 3.2 内部结构 3.3 NonfairSync 3.3.1 lock() 3.3.2 unlock ...
分类:
其他好文 时间:
2018-03-27 16:34:25
阅读次数:
163
https://www.cnblogs.com/chengdabelief/p/7493200.html 基于AQS的锁(比如ReentrantLock)原理大体是这样:有一个state变量,初始值为0,假设当前线程为A,每当A获取一次锁,status++. 释放一次,status--.锁会记录当前 ...
分类:
其他好文 时间:
2018-03-19 19:36:12
阅读次数:
470
1、个人总结和看法: (1)、AQS和ReentrantLock的关系? ReentrantLock是基于AQS的实现的,昨天我们说了AQS的tryAcquire()是默认抛出异常的需要子类去重写逻辑,ReentrantLock就重写了tryAcquire()。这样就解释了之前的疑问,因为这本来就是 ...
分类:
其他好文 时间:
2018-02-26 13:32:44
阅读次数:
154
前言 : 先说说这个 CLH锁: 加锁 1. 创建一个的需要获取锁的 Node 2. 通过 CAS操作 让自己 成为这个尾部的节点,然后令 设置自己的pre 3. 自旋,直到pre节点释放 释放: 1. 标记自己的状态为释放. 正文: 什么是在java里 AQS 是一个 抽象的同步队列.是的他是一个 ...
分类:
其他好文 时间:
2018-02-24 13:06:04
阅读次数:
218
简介 这里模仿Semaphore,自定义自己的信号量,利用AQS共享模式 1、MySemaphore.java 2、测试 ...
分类:
其他好文 时间:
2018-02-13 15:38:15
阅读次数:
173
简介 这里模仿CountDownLatch类自定义到时计时器,利用AQS模板中的尝试获得共享和释放共享 1、MyCountDownLatch 2、测试 ...
分类:
其他好文 时间:
2018-02-13 12:24:09
阅读次数:
160
简介 临近过年了,没什么需求,今天模仿ReentrantLock自定义写了一个自己锁,在这里记录一下,前提是对AQS原理有所了解,分享给大家 1、自定义锁MyLock 2、测试类 ...
分类:
其他好文 时间:
2018-02-12 20:01:35
阅读次数:
172
■ 前言 之前 LockSupport 那篇已经叙述了是线程阻塞工具类,其底层由 Unsafe 实现,即 park(), unpark() 方法,获取指针偏移量,并操纵内存。本篇主要介绍 Unsafe 的源码,看看底层到底做了什么。 ■ Unsafe 综述 作用: Unsafe是个后门类,封装了一些 ...
分类:
其他好文 时间:
2018-02-07 15:04:16
阅读次数:
317
在上一篇《Java并发系列[1] AbstractQueuedSynchronizer源码分析之概要分析》中我们介绍了AbstractQueuedSynchronizer基本的一些概念,主要讲了AQS的排队区是怎样实现的,什么是独占模式和共享模式以及如何理解结点的等待状态。理解并掌握这些内容是后续阅 ...
分类:
编程语言 时间:
2018-02-03 12:44:35
阅读次数:
392