个人简介

Echo Blog


江湖无名 安心练剑
  • java 手写并发框架(二)异步转同步框架封装锁策略
    序言 上一节我们学习了异步查询转同步的 7 种实现方式,今天我们就来学习一下,如何对其进行封装,使其成为一个更加便于使用的工具。 思维导图如下: 拓展阅读 java 手写并发框架(1)异步查询转同步的 7 种实现方式 异步转同步的便利性 实现方式 循环等待 wait & notify 使用条件锁 ...
    2019-01-18 03:21:15 | Concurrency
  • java 手写并发框架(一)异步查询转同步的 7 种实现方式
    序言 本节将学习一下如何实现异步查询转同步的方式,共计介绍了 7 种常见的实现方式。 思维导图如下: 异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果。 比如业务开发中我们调用其他系统,但是结果的返回确实通知的。 或者 rpc 实现中,client 调用 server 端,结果也是异步返回的,那么如何同步获取调用结果呢? 正常处理逻辑 ...
    2019-01-18 03:21:15 | Concurrency
  • java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化
    异步转同步 业务需求 有些接口查询反馈结果是异步返回的,无法立刻获取查询结果。 正常处理逻辑 触发异步操作,然后传递一个唯一标识。 等到异步结果返回,根据传入的唯一标识,匹配此次结果。 如何转换为同步 正常的应用场景很多,但是有时候不想做数据存储,只是想简单获取调用结果。 即想达到同步操作的结果,怎么办呢? 思路 发起异步操作 ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-40-Lock Free 无锁算法
    Lock-Free 编程是什么? 当谈及 Lock-Free 编程时,我们常将其概念与 Mutex 或 Lock 联系在一起,描述要在编程中尽量少使用这些锁结构,降低线程间互相阻塞的机会,以提高应用程序的性能。 类同的概念还有 “Lockless” 和 “Non-Blocking” 等。 实际上,这样的描述只涵盖了 Lock-Free 编程的一部分内容。本质上说,Lock-Free 编...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-39-Fork/Join 框架、工作窃取算法
    工作窃取算法 工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。 那么为什么需要使用工作窃取算法呢? 假如我们需要做一个比较大的任务,我们可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,于是把这些子任务分别放到不同的队列里,并为每个队列创建一个单独的线程来执行队列里的任务,线程和队列一一对应,比如A线程负责处理A队列里的任务。 但是有的...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-38-构建自定义的同步工具 Condition、AQS
    导读 类库中包含了许多存在状态依赖的类,例如FutureTask、Semaphore和BlockingQueue,他们的一些操作都有前提条件,例如非空,或者任务已完成等。 创建状态依赖类的最简单的房就是在JDK提供了的状态依赖类基础上构造。 例如第八章的ValueLactch,如果这些不满足,可以使用Java语言或者类库提供的底层机制来构造,包括 内置的条件队列 ...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-37-StampedLock 读写锁中的最强王者
    StampedLock 简介 我们前面介绍了 ReentrantReadWriteLock可重入读写锁详解,不过 jdk1.8 引入了性能更好的 StampedLock 读写锁,我愿称之为最强! 一种基于能力的锁,具有三种模式用于控制读/写访问。 StampedLock的状态由版本和模式组成。 锁定采集方法返回一个表示和控制相对于锁定状态的访问的印记; 这些方法的“尝试”版本可...
    2019-01-18 03:21:15 | Concurrency
  • JCIP-36-ReentrantReadWriteLock 读写锁详解
    ReentrantLock 锁回顾 在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, 定时锁, 有条件锁, 可轮询锁, 可中断锁. 可以有效避免死锁的活跃性问题 Loc...
    2019-01-18 03:21:15 | Concurrency