原文:【JUC源码解析】Exchanger

简介 Exchanger,并发工具类,用于线程间的数据交换。 使用 两个线程,两个缓冲区,一个线程往一个缓冲区里面填数据,另一个线程从另一个缓冲区里面取数据。当填数据的线程将缓冲区填满时,或者取数据的线程将缓冲区里的数据取空时,就主动向对方发起交换缓冲区的动作,而交换的时机是,一个缓冲区满,另一个缓冲区空。代码如下,很简单,没有加注释。 输出如下,交换前后,两个线程所持的数据缓冲区对调。 部分输出 ...

2017-12-18 01:19 4 1622 推荐指数:

查看详情

JUC源码解析】CompletableFuture

简介 先说Future, 它用来描述一个异步计算的结果。isDone方法可以用来检查计算是否完成,get方法可以用来获取结果,直到完成前一直阻塞当前线程,cancel方法可以取消任务。而对于结果的获 ...

Thu Jun 21 06:59:00 CST 2018 0 3620
CountDownLatch、CyclicBarrier、Semaphore、Exchanger 的详细解析

本文主要介绍和对比我们常用的几种并发工具类,主要涉及 CountDownLatch 、 CyclicBarrier 、 Semaphore 、 Exchanger 相关的内容,如果对多线程相关内容不熟悉,可以看笔者之前的一些文章: 《Java并发编程-线程基础》 《总算把线程六种状态 ...

Mon Nov 30 18:14:00 CST 2020 0 526
JUC并发编程基石AQS之主流程源码解析

前言 由于AQS的源码太过凝练,而且有很多分支比如取消排队、等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排队和等待条件的分支逻辑。读源码千万别在每个代码分支中来回游走,先按一个正常的分支把流程看明白 ...

Sun Apr 26 05:12:00 CST 2020 0 745
JUC AQS ReentrantLock源码分析

警告⚠️:本文耗时很长,先做好心理准备,建议PC端浏览器浏览效果更佳。 Java的内置锁一直都是备受争议的,在JDK1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1. ...

Sat Aug 10 03:59:00 CST 2019 2 788
JUC

1.简介 JUC自JDK1.5出现,为java.util.concurrent包的简称 1.1.线程状态 线程状态枚举类:Thread.State 1.2.wait与sleep区别 (1)sleep是Thread的静态方法,wait是Object的方法,任何对象实例均能调用 ...

Sun Aug 29 18:18:00 CST 2021 0 99
JUC

并发编程3个包: java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks 线程的六 ...

Tue May 04 23:48:00 CST 2021 0 416
JUC】JDK1.8源码分析之ReentrantReadWriteLock

重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线 ...

Wed Sep 12 23:59:00 CST 2018 0 1155
JUC】JDK1.8源码分析之ArrayBlockingQueue(三)

一、前言   在完成Map下的并发集合后,现在来分析ArrayBlockingQueue,ArrayBlockingQueue可以用作一个阻塞型队列,支持多任务并发操作,有了之前看源码的积累,再看ArrayBlockingQueue源码会很容易,下面开始正文 ...

Fri May 27 23:45:00 CST 2016 0 1715
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM