![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解读
文章平均质量分 94
哈喽羊
这个作者很懒,什么都没留下…
展开
-
【Java并发编程】ThreadPoolExecutor 源码解读
一. 介绍1.1 池化思想在说线程池之前先说下池化思想,池化的出现是为了解决资源管理与资源分配的问题,计算机中,基于池化思想诞生了数据库连接池,内存池等,而线程连接池也是池化思想的产物。我们知道,线程的创建与销毁是需要耗费资源的,所以我们通过线程池对线程做统一的管理,可以达到降低资源消耗,提高响应速度,并提供更多的功能。1.2 类结构我们先来看看ThreadPoolExecutor的一个UML图Executor:接口注释告诉我们,它提供了一种思想,即将任务提交和任务执行进行解耦。用户无需关注原创 2021-01-02 17:01:12 · 402 阅读 · 0 评论 -
【Java并发编程】ReentrantLock 源码解读
一. 介绍上篇文章介绍了Lock接口,这篇文章我们就来看看实现Lock接口的ReentrantLock类二. 属性ReentrantLock只有两个属性 private static final long serialVersionUID = 7373984872572414699L; // 提供了所有实现机制 private final Sync sync;Sync是ReentrantLock的一个内部抽象类,它继承了AQS,而ReentrantLock另外两个内部类:Fai原创 2020-12-27 10:52:15 · 402 阅读 · 0 评论 -
【Java并发编程】Lock与Condition接口
Lock与Condition接口一. 介绍我在《AQS(5)——ConditionObject》这篇文章中曾提过管程这个概念,它能够解决并发编程领域的两大核心问题互斥:同一时刻只能有一个线程访问共享资源同步:线程之间的通信协作而Java在1.5版本之前,是通过synchronized来实现。到了Java 1.5版本,Java大神Doug Lea的又在Java并发包增加了Lock和Condition两接口来解决这两个问题为啥synchronized实现了管程,还要添加这两接口重复实现呢?答案很原创 2020-12-26 23:53:27 · 399 阅读 · 0 评论 -
【Java并发编程】AQS(5)——ConditionObject
这篇文章是AQS系列的最后一篇文章,也是非常重要的一篇,因为这篇文章将引入并发编程中非常重要的一个概念:条件变量。在聊条件变量之前我想先聊聊管程(monitor),下面是对管程的描述:在并发程序中,管程是一种同步结构,它不仅允许线程拥有互斥和等待条件变化的能力,其还可以告诉其他线程条件是否满足。管程是由一个互斥量和多个条件变量构成,一个条件变量实质上是一个等待条件的容器。在再次获得互斥量执行任...原创 2020-04-29 21:31:59 · 1098 阅读 · 3 评论 -
【Java并发编程】AQS(4)——共享锁的获取与释放
今天来说下共享锁的获取与释放,建议大家在看这篇文章之前,先将我写的关于独占锁的文章看一下,其中涉及了许多重复的方法,在这篇文章中就不会再次讲解了。好了,我们先来看共享锁的获取吧一. 共享锁的获取在AQS中共享锁的获取一共有三个方法,今天主要讲第一个 acquireShared:不响应中断获取锁 acquireSharedInterruptibly:响应中...原创 2020-04-10 01:14:57 · 711 阅读 · 8 评论 -
【Java并发编程】AQS(3)——独占锁的释放
今天主要讲AQS中对独占锁的释放,如果大家把昨天“独占锁的获取”看完了,今天这篇文章将会很轻松!AQS在独占模式下,对锁的释放只有release方法,而release方法其实就做了两件事:释放锁和唤醒后继Node(准确讲是Node中的线程,后面为了方便统一称为Node)。下面我们直接看源码吧原创 2020-04-05 17:33:46 · 1341 阅读 · 5 评论 -
【Java并发编程】AQS(2)——独占锁的获取
今天是4月4日,清明节第一天,互联网一片灰白,大家都在缅怀逝者,致敬英烈。所以今天我也没有过多的娱乐,一天都在鼓捣这篇文章。今天这篇主要说说AQS独占锁的获取。AQS中对独占锁的获取一共有三个方法,今天主要说第一个 acquire:不响应中断获取独占锁 acquireInterruptibly:响应中断获取独占锁 tryAcquireNanos:响应中断+超时获...原创 2020-04-04 22:34:58 · 1484 阅读 · 15 评论 -
【Java并发编程】AQS(1)——并发三板斧
自己定的目标不能一开始就垮了啊,明天就放假了,所以赶紧开始更新Java并发编程系列的第一篇文章(准确来说是第二篇,因为前面还写过一篇FutureTask源码解读),也是AQS系列的第一篇文章。其实关于AQS系列的早就写好了,但是一直在反复修改而没有发上来,原因是我希望自己的文章是有信息有价值的。作为一名面向搜索引擎编程的软件工程幼狮,我每天也会接触许多无用信息,所以秉着爱护网络,人人有责的理念,对...原创 2020-04-03 23:52:29 · 896 阅读 · 7 评论 -
【Java并发编程】FutureTask源码解读
最近在学习netty,其中讲到了异步回调,而Netty中的异步回调继承并扩展了JdK中FutureTask相关的API,所以索性又把FutureTask源码看了一遍,看完就觉得两个字:????????!于是决定写篇文章梳理梳理。最近要做的东西太多了,唠嗑概念啥的不多讲了,直接开撕源码吧!一. FutureTask简介我们都知道,Java中生成线程两种最常见的方式是继承Thread,和...原创 2020-03-09 17:06:47 · 505 阅读 · 2 评论