• 2024-09-22Java并发(六):ReentrantLock的解锁过程
    可以看到其调用的还是内部类sync的方法,而且可以看到这是一个无返回值的方法并且传入了一个为1的参数release方法可以看到,其调用的是AQS里面的release方法步骤如下先调用tryRelease方法,尝试进行解锁然后判断是否需要唤醒线程返回true,代表释放锁成功tryRelease方法
  • 2024-04-05AbstractQueuedSynchronizer源码分析
    在分析Java并发包java.util.concurrent源码的时候,少不了需要了解AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是Java并发包的基础工具类,是实现ReentrantLock、CountDownLatch、Semaphore、FutureTask等类的基础。在分析Java并发包java.util.concurren
  • 2023-11-10知道CountDownLatch是做什么的,那你知道它的底层是如何实现的吗?
    一、概述CountDownLatch是一个多线程控制工具,用来控制线程的等待。设置需要countDown的数量num,然后每一个线程执行完毕后,调用countDown()方法,而主线程调用await()方法执行等待,直到num个子线程执行了countDown()方法,则主线程解除阻塞,开始继续执行。其具体操作流程类似火箭发射,我们
  • 2023-07-13AQS实现原理
    在java.util.concurrent包中,我们经常会使用ReentrantLock,CyclicBarrier等工具类,但是我们往往对其内部的实现原理却并不知晓。本篇文章主要对上述工具类的核心实现AQS进行剖析,分析原理可以让我们学习到大神的代码设计思维。文章将从一下几个方面分析:1.AQS是什么?AbstractQueuedS
  • 2023-06-26ReentrantLock底层实现原理
    ReentrantLock底层的源码分析:本小节我们将由浅入深的讲解ReentrantLock的底层源码,其中会附带有源码的分析:1.自己实现简易的ReentrantLock锁:在多线程的并发的操作当中,我们需要通过锁机制来实现多个线程互斥的访问特定的资源从而避免并发下的操作问题。我们可以先来看一下Reentra
  • 2022-10-08AQS源码深度解析之cancelAcquire方法解读
    1.背景2.源码解读调用该方法的地方 方法源码解读/***取消获取资源(异常处理时都需要用到)*方法主要功能:*1.处理当前取消节点的状态;
  • 2022-08-14带着问题看AQS waitState 系列一
    AQS中存在设置waitState状态的方法 shouldParkAfterFailedAcquire,根据问题反推其设计的原因  shouldParkAfterFailedAcquire源码如下   以ReentrantLock为