
Java并发编程
文章平均质量分 94
Java并发编程
三木加两木
铁厂研发
展开
-
JUC常用的并发工具的使用和实现原理
文章目录1.概述2.CountDownLatch代码演示源码分析3.CyclicBarrier代码演示源码分析4.Exchanger代码演示5.Semaphore代码演示源码分析1.概述java并发编程系列博客前面6篇,介绍了synchronized和ReentrantLock的使用和实现原理。博客地址如下:synchronized你用对了吗?synchronized锁升级就是这么的简单wait、notify、notifyAll你知道多少?【图解】一篇搞定ReentrantLock的加锁和解锁原创 2021-02-09 21:03:16 · 907 阅读 · 2 评论 -
ReentrantLock Condition的使用和实现原理(不留死角!!!)
文章目录1. 概述2. 初识Condition3. 5种await方法的使用3.1 await()3.2 awaitUninterruptibly()3.3 awaitNanos(long nanosTimeout)3.4 awaitUntil(Date deadline)3.5 await(long time, TimeUnit unit)4. 5种await方法的源码分析4.1 await()4.2 awaitUninterruptibly()4.3 awaitNanos(long nanosTimeo原创 2021-02-02 12:38:21 · 2252 阅读 · 4 评论 -
ReentrantLock中四种加锁方式的使用区别和源码实现的细节差异
文章目录1.概述2.使用区别3.源码实现的细节差异1.概述在上一篇博客当中,详细的介绍了ReentrantLock的加锁和解锁的过程,但还遗留了一些问题。本文将介绍ReentrantLock当中4个加锁方式的使用区别和分析其源码实现的细节差异。2.使用区别lock()不可被中断的获取锁的方式。tryLock()尝试一次拿锁,拿不到就返回false,不会像其他方式一样进入阻塞队列。如果拿到了就返回true。lockInterruptibly()可被中断的获取锁的方式,在拿锁的期间原创 2021-01-22 13:38:27 · 638 阅读 · 2 评论 -
【图解】一篇搞定ReentrantLock的加锁和解锁过程
文章目录1. 概述2. AbstractQueuedSynchronizer(AQS)3. 加锁4. 解锁5. 公平锁和非公平锁的区别1. 概述本文主要结合图片分析ReentrantLock加锁和解锁过程的源码,加锁和解锁的原理不清楚的读者可以好好看看。2. AbstractQueuedSynchronizer(AQS)在分析ReentrantLock加锁和解锁的过程之前,先来了解一下AQS,ReentrantLock就是基于AQS实现的。AQS其实就是维护了一个双向链表,主要的属性如下所示: T原创 2021-01-20 12:26:53 · 2541 阅读 · 6 评论 -
wait、notify、notifyAll你知道多少?
文章目录1.概述2.monitor对象3.先阻塞的线程先拿到锁还是后拿到锁?4.先wait的线程先被唤醒还是后被唤醒?5. notifyAll的唤醒有顺序吗?1.概述 本篇博客将围绕synchronized同步锁的阻塞、等待、唤醒展开,探究wait、notify和notifyAll的实现原理。2.monitor对象在介绍上述的原理之前,先来了解一下什么是monitor对象。synchronized相关的阻塞、等待、唤醒操作离不开这个监视器对象。monitor在上一篇博客中也提到了,重量级的锁对象在原创 2021-01-08 10:01:25 · 580 阅读 · 2 评论 -
synchronized锁升级就是这么的简单
文章目录1. 概述2. Mark Word3. 非锁不可偏向状态与非锁可偏向状态的区别4. 偏向锁5. 轻量级锁6. 重量级锁7. synchronized锁升级总结1. 概述在jdk1.6之后,对synchronized进行了优化,对于一个锁对象有如下6种状态:非锁不可偏向状态、非锁可偏向状态、偏向锁状态、轻量级锁状态、重量级锁状态和GC状态。本篇博客将介绍6种状态的区别以及synchronized的升级膨胀的一个过程。2. Mark Word在说明6种状态的不同之前,先来了解一下什么是Mar原创 2021-01-05 17:03:07 · 1027 阅读 · 9 评论 -
synchronized你用对了吗?
文章目录1. 概述2. synchronized关键字锁的是什么?3.锁对象的属性改变和锁对象改变对于锁的使用的影响4.同步方法和非同步方法是否可以同时调用?5.读方法需不需要加synchronized?6. synchronized是否支持可重入7.synchronized可重入的另一种情况,继承8.synchronized同步方法内发生异常,是否会释放锁?1. 概述本篇博客记录synchronized的使用,注意的事项。2. synchronized关键字锁的是什么?synchronized关键原创 2020-12-22 12:10:43 · 1666 阅读 · 12 评论 -
多生产者多消费者线程全部处于等待的问题原因
代码示范public class ProduceConsume { private int i = 0; private final Object LOCK = new Object(); private volatile boolean isProduce = false; public void produce() { synchroni...原创 2020-04-14 18:14:50 · 441 阅读 · 0 评论