个人简介

Echo Blog


江湖无名 安心练剑
  • 锁专题(9) CyclicBarrier 栅栏源码深度解析
    栅栏(Barrier) 简介 栅栏(Barrier)类似于闭锁,它能阻塞一组线程直到某个事件发生。 闭锁是一次性对象,一旦进入最终状态,就不能被重置了。 栅栏与闭锁的关键区别在于,所有线程必须同时达到栅栏位置,才能继续执行。 闭锁用于等待事件,而栅栏用于等待其他线程。 而我再等你点赞。 java 手写并发框架(一)异步查询转同步的7种实现方式 我就用到了 CyclicBarri...
    2020-10-17 08:15:55 | Lock
  • 锁专题(9) CountDownLatch 源码深度解析
    CountDownLatch 闭锁 我们在 java 手写并发框架(一)异步查询转同步的7种实现方式 和 从零手写并发框架(二)异步转同步实现4种锁策略 都是用过这个类,感兴趣的小伙伴可以看一下。 说明 CountDownLatch 是一种同步工具类,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。 可以让一个线程等待一组事件发生后(不一定要线程结束)继续执行; ...
    2020-10-17 08:15:55 | Lock
  • 锁专题(9) ConcurrentSkipListSet 源码解析
    ConcurrentSkipListSet 简介 基于以下内容的可伸缩并发NavigableSet}实现:ConcurrentSkipListMap。 万字长文,ConcurrentSkipListMap源码详解 集合中的元素根据其可比自然顺序或在集合创建时提供的Comparator保持排序,具体取决于使用哪个构造函数。 set 汇总 我们学习了大量的 jdk 的集合...
    2020-10-17 08:15:55 | Lock
  • 锁专题(9) ConcurrentSkipListMap 源码解析
    ConcurrentSkipListMap 简介 可伸缩的并发ConcurrentNavigableMap 实现。 根据可比较的自然顺序或根据在创建 map 时提供的Comparator对 map 进行排序,具体取决于所使用的构造函数。 入门例子 ConcurrentSkipListMap<String, Integer> map = new ConcurrentS...
    2020-10-17 08:15:55 | Lock
  • 锁专题(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