多线程
文章平均质量分 80
YO_RUI
虚无缥缈
展开
-
ReentrantLock源码浅析
文章目录一、前言二、源码介绍1、基本构造2、加锁与解锁2.1、加锁2.1.1、公平锁2.1.2、非公平锁2.2、解锁三、小结一、前言 在此前《ReentrantLock基本介绍》这篇博客中已经介绍了ReentrantLock的基本使用,那在本篇博客中将会简要介绍下其内部的主要源码。前提:对AbstractQueuedSynchronizer(简称AQS)有了解,不清楚的可以先去看看《AbstractQueuedSynchronizer源码——基本认识》二、源码介绍1、基本构造 在上面两原创 2021-08-06 15:46:51 · 101 阅读 · 0 评论 -
ReentrantLock基本介绍
文章目录一、ReentrantLock是什么?二、基本使用1、可重入锁2、非公平锁与公平锁三、小结一、ReentrantLock是什么? jdk1.5新增了并发包,里面包含Lock接口,与synchronized关键字一样能实现同步功能,但相比synchronized,Lock更加灵活,可以手动获取、释放锁,而ReentrantLock就是Lock的一个实现类。二、基本使用1、可重入锁 ReentrantLock从字面意思翻译就是可重入锁,那什么是可重入锁?简单来说就是某个线程获取改锁后,可原创 2021-08-05 14:08:23 · 1115 阅读 · 0 评论 -
CountDownLatch源码简要分析
文章目录一、前言二、源码2.1 构造方法2.2 Sync类2.3 await2.4 countDown三、小结一、前言 前面已经通过小例子介绍了CountDownLatch的基本使用场景,在本篇博客中我们简要的看下CountDownLatch的源码,看看是如何实现的,前提是必须先要知道AQS的大体流程,因为CountDownLatch是基于AQS实现的,不清楚的可以先看《AbstractQueuedSynchronizer源码——基本认识》。二、源码 整体上CountDownLatch的源码很原创 2021-08-03 11:06:52 · 190 阅读 · 0 评论 -
CountDownLatch简单介绍
文章目录一、CountDownLatch是什么?二、使用示例1、场景12、场景2三、小结一、CountDownLatch是什么? CountDownLatch是一个同步工具类,在java.util.cucurrent包中,是JUC编程中较为常用的一个工具类,允许一个或多个线程一直等待,直到其他线程运行完成后再执行。 它的的实现简单来说是通过一个计数器,初始化的时候给计时器一个指定值,然后在子线程中当执行完规定的逻辑后,计数器会进行减1操作,当计数器为0时,那么在阻塞等待的线程则会被唤醒恢复执行。原创 2021-07-30 14:49:54 · 718 阅读 · 0 评论 -
AbstractQueuedSynchronizer源码——基本认识
文章目录前言一、AbstractQueuedSynchronizer是什么?二、主体构造三、源码1、队列节点2、独占模式2.1 acquire(int arg)前言最近比较闲,就打算阅读学习一下java并发相关的内容,主要平常自己涉及不到高并发的业务,所以这一块也是短板,本篇文章主要是介绍AbstractQueuedSynchronizer(简称AQS)的独占模式和共享模式下的获取、释放资源的操作过程,有什么错误的地方也欢迎大家指出。一、AbstractQueuedSynchronizer是原创 2021-07-29 16:56:49 · 163 阅读 · 0 评论 -
Java线程的虚假唤醒
虚假唤醒这个其实也算不上什么高深的点,简单来说就是**这个线程醒来时候干了不该干的事~**先来看个示例,然后再来分析下产生的原因。小明放暑假了,每天的事情就是吃饭和睡觉,我们就把这个小明当做资源类。...原创 2021-07-12 13:17:54 · 218 阅读 · 1 评论 -
线程池ThreadPoolExecutor原理
在并发场景下,线程池出镜率是比较高的,线程池的使用可以给我们带来一些好处:降低资源消耗通过对线程的重复利用避免了频繁的创建和销毁线程所带来的的开销。提高相应速度当有任务产生时,可以直接使用现有的空闲线程,无需去创建。提高对线程的管理并发情况下往往会有很多线程运行,但线程不能无限度的创建运行,因为线程也是需要占用资源,过多的线程导致系统可用资源急剧下降,降低系统稳定性。线程池的使用可以...原创 2019-08-16 10:58:24 · 263 阅读 · 0 评论