• ReentrantLock 源码分析 - 加锁

    前言本系列文章通过日常中比较常见 ReentrantLock 开始,逐步揭开AQS的底层。 lock()1234567ReentrantLock lock = new ReentrantLock();try{ lock.lock();...
  • ReentrantLock 源码分析 - 解锁

    release123456789101112public final boolean release(int arg) { // 尝试释放 if (tryRelease(arg)) { Node h = ...
  • AQS 首节点为什么为null的虚节点

    一句话总结节点入队不是原子操作!!! 等待队列正在有线程进行初始化,但只是进行到了Tail指向Head,没有将Head指向Tail,此时队列中有元素,需要返回True。如果Head没有指向Tail,这种情况下也需要将相关线程加入队列中。所以这块代码是...
  • ReentrantLock 前言

    前言ReentrantLock 和 synchronized 都是 Java 语言中常见的锁,在软件行业没有永远的银弹既然存在表示有存在的意义。 这就要从2004年说起,当时的 synchronized 还没有经过优化是一个重量级锁,所以同年发布的 ...
  • AQS基础理解

    前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于 AbstractQueuedSynchronizer (简称为AQS)实现的,中文名:抽象队列同步器。 AQS是一种提供了原子式管理同步状态、阻塞和唤...
  • First Test Post

    Test这是一个测试的文章一个图片的测试http https
  • Hello World

    Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, yo...