个人简介

Echo Blog


江湖无名 安心练剑
  • 锁专题(9) ConcurrentLinkedQueue 源码深度解析
    ConcurrentLinkedQueue 简介 这个类由李大狗和 Martin Buchholz 一起实现的。 ConcurrentLinkedQueue是一个基于链接节点的无界线程安全队列,遵循队列的FIFO原则,队尾入队,队首出队。 注意:此队列不允许使用 null 元素。 入门案例 这里我们主要演示方法使用,就不演示并发安全了,后面源码会解释。 ConcurrentLi...
    2020-10-17 08:15:55 | Lock
  • 锁专题(9) ArrayBlockingQueue 使用入门及源码解析
    ArrayBlockingQueue 简介 由数组支持的有界阻塞队列。该队列对元素FIFO(先进先出)进行排序。 队列的开头是已在队列中停留最长时间的元素。 队列的尾部是最短时间位于队列中的元素。 新元素插入到队列的尾部,并且队列检索操作在队列的开头获取元素。 应用场景 多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利...
    2020-10-17 08:15:55 | Lock
  • 锁专题(8)java 从零手写实现 ReadWriteLock 读写锁
    点赞再看,已成习惯。 序言 我们在前面的文章中详细介绍了 jdk 自带的可重入读写锁使用及其源码。 本节就让我们一起来实现一个读写锁。 最基础的版本 思路 我们先实现一个最基础版本的读写锁,便于大家理接最核心的部分。 后续将在这个基础上持续优化。 接口定义 为了后续拓展,我们统一定义基础的接口,一共 4 个方法: package com.github.houbb....
    2020-10-17 08:15:55 | Lock
  • 锁专题(7)从零手写实现你的 SpinLock 自旋锁及可重入锁
    点赞再看,已成习惯。 序言 我们在前面的文章中详细介绍了 jdk 自带的可重入锁使用及其源码。 本节就让我们一起来实现一个可重入锁。 接口定义 为了便于后期拓展,我们统一定义接口。 接口 继承自 jdk Lock 接口,并且新增了几个常用的方法。 package com.github.houbb.lock.api.core; import java.util.c...
    2020-10-17 08:15:55 | Lock
  • 锁专题(6)AbstractQueuedSynchronizer AQS 源码详解
    点赞再看,已成习惯。 AQS 提供一个框架,用于实现依赖先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量,事件等)。 源码学习 类定义 /* * @since 1.5 * @author Doug Lea */ public abstract class AbstractQueuedSynchronizer extends AbstractOwnabl...
    2020-10-17 08:15:55 | Lock
  • 锁专题(5)Seqlocks 在 java 中如何实现论文详解
    点赞再看,已成习惯。 本文出自论文《Can Seqlocks Get Along With Programming Language Memory Models?》,由老马啸西风翻译整理。 这篇论文李大狗在 StampedLock 的算法笔记中提及,好奇心驱使着我将论文找出来,拜读一下。 序言 在某些情况下,Seqlock是一种重要的同步机制,它表示对常规读写器锁的重大改进。...
    2020-10-17 08:15:55 | Lock
  • 锁专题(3)ReentrantLock 可重入锁源码解析
    点赞再看,已成习惯。 ReentrantLock 源码 介绍 ReentrantLock 的文章很多,今天我们来一起看一下 ReentrantLock 的源码,理解一下实现原理。 类定义 ReentrantLock 实现了 Lock 接口,和序列化接口。 /** * @author 老马啸西风 */ public class ReentrantLock implem...
    2020-10-17 08:15:55 | Lock
  • 锁专题(2)Lock 和 Condition 接口简介
    接口源码学习 说明 Lock 接口和 Condition 接口作为锁最核心的两个接口,这里做一下简单介绍,为后续的源码阅读提供基础。 jdk 版本 >java -version java version "1.8.0_192" Java(TM) SE Runtime Environment (build 1.8.0_192-b12) Java HotSpot(TM) 64-Bi...
    2020-10-17 08:15:55 | Lock