写点什么

JUC

0 人感兴趣 · 35 次引用

  • 最新
  • 推荐

AQS 的今生,构建出 JUC 的基础

《AQS的前世,从1990年的论文说起》中我们已经对AQS做了简单的介绍,并学习了先于AQS出现的3种基于排队思想的自旋锁。今天我们深入到AQS的设计中,探究Doug Lea是如何构建JUC框架基础组件的。不过在正式开始前,我们先来回顾上一篇中提到的面试题:

被裁后,狂刷大牛分享的 607 页 JUC 源码分析笔记,立马拿蚂蚁 offer

可能大家最近,在公众号,或者各大自媒体平台,都能够刷到,因为疫情美国经济面临结构性衰退,美联储疯狂印钞导致世界性经济波动,导致国际环境不是很好,也间接影响到了中国,中国也在做产业结构性的调整,各行各业都非常的卷,尤其是互联网行业,大肆裁员,

解决 80% 的工作场景?GitHub 爆赞的 Java 高并发与集合框架,太赞了

在工作中,笔者经常和掌握不同技术的朋友讨论具体问题的解决方案,发现在Java体系中,大家使用最多的是Java集合框架(JCF)和Java并发工具包(JUC)。实际上,JCF和JUC已经能够覆盖笔者及朋友们工作中遇到的超过8成的应用场景,但是大家往往无法快速匹配最合

https://static001.geekbang.org/infoq/3c/3cf3aeb41b761fe92acd8dee567e39a7.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

JUC 常用 4 大并发工具类

JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些定义类,该包的位置位于java下面的rt.jar包下面。

https://static001.geekbang.org/infoq/55/55269a6bcead8d00801ad8bfc80b77d0.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

【JUC】交换器 Exchanger 详解

用户头像
JAVA旭阳
2022-12-02

JDK中提供了不少的同步工具,现在分享一个相对比较冷门的同步工具——交换器(Exchanger)。你知道Exchanger的作用是什么吗?实现机制是什么?可以用来做什么呢?

https://static001.geekbang.org/infoq/a9/a99c70fda1518e4e36e7f5615a087372.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

【JUC】循环屏障 CyclicBarrier 详解

用户头像
JAVA旭阳
2022-12-01

jdk中提供了许多的并发工具类,大家可能比较熟悉的有CountDownLatch,主要用来阻塞一个线程运行,直到其他线程运行完毕。而jdk还有一个功能类似并发工具类CyclicBarrier,你知道它的作用吗?和CountDownLatch有什么区别呢?

https://static001.geekbang.org/infoq/ec/ecc438c207da879511cc750011a7487e.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

☕【Java 技术之旅】如何彻底认识 AQS 的原理 (上篇)

用户头像
洛神灬殇
2021-05-10

不知道大家喜不喜欢我新的写作风格呢,标题风格随便设计了一下,哈哈,希望给一些意见哦,

读写锁

用户头像
wzh
2021-05-09

ReadWriteLock 读写锁

https://static001.geekbang.org/infoq/39/39f85a546a1838bf67f7c9287eae084b.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java- 技术专题 - 多线程顺序执行的 8 种方案实现

用户头像
洛神灬殇
2021-04-27

本文使用了7中方法实现在多线程中让线程按顺序运行的方法,涉及到多线程中许多常用的方法,不止为了知道如何让线程按顺序运行,更是让读者对多线程的使用有更深刻的了解。 使用的方法如下:

https://static001.geekbang.org/infoq/39/39f85a546a1838bf67f7c9287eae084b.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java- 技术专题 -CountDownLatch 的介绍和使用

用户头像
洛神灬殇
2021-04-18

CountDownLatch是在JDK1.5的时候才被引入,跟它一起被引入的工具类还有CyclicBarrier(回环栅栏)、Semaphore(信号量)、ConcurrentHashMap(并发Hash表)和BlockingQueue(阻塞队列),存在于java.util.concurrent包下(常说JUC)。接下来讲解一下这

ScheduledThreadPoolExecutor 源码解读(二)ScheduledFutureTask 时间调度执行任务(延迟执行、周期性执行)

用户头像
徐同学呀
2021-04-17

延迟阻塞队列DelayedWorkQueue中放的元素是ScheduledFutureTask,提交的任务被包装成ScheduledFutureTask放进工作队列,Woker工作线程消费工作队列中的任务,即调用ScheduledFutureTask.run(),ScheduledFutureTask又调用任务的run(),这点和ThreadPoolExecu

ScheduledThreadPoolExecutor 源码解读(一)DelayedWorkQueue 高度定制延迟阻塞优先工作队列

用户头像
徐同学呀
2021-04-17

ScheduledThreadPoolExecutor继承自ThreadPoolExecutor,所以其内部的数据结构和ThreadPoolExecutor基本一样,并在其基础上增加了按时间调度执行任务的功能,分为延迟执行任务和周期性执行任务。

ThreadPoolExecutor 源码解读(三)如何优雅的关闭线程池(shutdown、shutdownNow、awaitTermination)

用户头像
徐同学呀
2021-04-17

学会了如何提交任务,还需要知道如何正确的关闭线程池。当关闭一个线程池时,有的工作线程还正在执行任务,有的调用者正在向线程池提交任务,并且工作队列中可能还有未执行的任务。因此,关闭过程不可能是瞬时的,而是一个平滑过渡的过程。

ThreadPoolExecutor 源码解读(二)execute 提交任务,Worker 详解。如何执行任务?如何回收空闲线程?

用户头像
徐同学呀
2021-04-17

了解了线程池基本属性的概念是远远不够的,还需要知道每一个属性在源码中的体现,比如提交任务的过程中是如何将核心线程数、工作队列、最大线程数以及拒绝策略等连起来的?工作线程是如何执行任务代码的?线程池是如何回收空闲线程的?

ThreadPoolExecutor 源码解读(一)重新认识 ThreadPoolExecutor(核心参数、生命周期、位运算、ThreadFactory、拒接策略)

用户头像
徐同学呀
2021-04-17

在Java中,创建一个线程new Thread,就像创建一个对象一样简单,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,并且要为线程分配一系列的资源,所以线程是一

FutureTask 源码解读,阻塞获取异步计算结果(阻塞、取消、装饰器、适配器、Callable)

用户头像
徐同学呀
2021-04-17

FutureTask 继承自Runnable,所以也可以实现异步执行的效果,但是和常规的异步执行方式不同,常规异步只要求异步的过程是正确的就可以了,而FutureTask不仅可以知道异步执行的状态,还可以知道异步结果。那它是如何实现的呢?

CopyOnWriteArrayList 源码解读之 CopyOnWrite 思想的利与弊

用户头像
徐同学呀
2021-04-17

CopyOnWriteArrayList作为并发容器集合,在窥探其原理之前,先想想,倘若让我们自己来开发一个并发集合,该如何设计?

https://static001.geekbang.org/infoq/03/03477d1f6b48b9d4ecde02d8f7c26adf.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

关于 ReentrantReadWriteLock,首个获取读锁的线程单独记录问题讨论(firstReader 和 firstReaderHoldCount)

用户头像
徐同学呀
2021-04-17

读了ReentrantReadWriteLock的源码,知道读写锁共用一个state,低16位表示写锁的状态和重入,高16位表示读锁的状态,右移16位表示持有读锁的线程数,那么该读锁是如何记录每个线程的重入呢?

https://static001.geekbang.org/infoq/1d/1d91f32be12e8680abe959beb8fb1fc8.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

ConcurrentHashMap 源码深度解析(二)(java8)直呼 Doug Lea 是真的细(带你参透扩容机制)

用户头像
徐同学呀
2021-04-15

扩容是重头戏,看过的人都说难。确实,和java7版本比起来,难度真不是一个量级的。有些细节看着莫名其妙,一想就是好几天,看似想明白也只能算是猜想合理,直呼Doug Lea的心思是真的细啊!

https://static001.geekbang.org/infoq/ad/ad9a2701680fffb207c4be3671e2c63b.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

ConcurrentHashMap 源码深度解析(一)(java8)不可不知的基本概念(助你拿下源码事半功倍)

用户头像
徐同学呀
2021-04-15

ConcurrentHashMap java1.8数据结构采用数组+链表+红黑树,废弃分段锁`Segement`,进一步降低锁的粒度,可将锁直接加在数组占位节点上。

https://static001.geekbang.org/infoq/ab/ab4a0a99735373993057f1232a07c380.gif?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

ConcurrentHashMap 源码深度解析(java7)原来如此简单 (写的真好,建议收藏)

用户头像
徐同学呀
2021-04-15

ConcurrentHashMap算是java基础中非常基本的知识点,不仅在日常开发中经常用到,面试中也是经久不衰的话题。它基本沿用HashMap的接口定义,使得即使不了解其底层原理,也能无缝切换。

https://static001.geekbang.org/infoq/17/17c04881f109c7aa2dae58347dba3150.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

1.1w 字,10 图,轻松掌握 BlockingQueue 核心原理

用户头像
马丁玩编程
2021-02-08

队列是一种 先进先出的特殊线性表,简称 FIFO...

ReentrantLock 原理分析

用户头像
旺旺
2021-01-19

ReentrantLock是Java并发包中提供的一个可重入的互斥锁,掌握它是提升Java内功的必备。

大厂面试题:你知道 JUC 中的 Semaphore、CyclicBarrier、CountDownLatch 吗

用户头像
Java鱼仔
2021-01-14

资源的分配方式有两种,一种是独占,比如之前讲的ReentrantLock,另外一种是共享

面试被问 AQS、ReentrantLock 答不出来?这些知识点让我和面试官聊了半小时!

用户头像
Java鱼仔
2021-01-12

面试被问AQS、ReentrantLock答不出来?这些知识点让我和面试官聊了半小时!

https://static001.geekbang.org/infoq/ad/ad3643259a3ae328e4b767ad075c1994.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

Java 中 CAS 原理分析 (volatile 和 synchronized 浅析)

用户头像
叫练
2020-12-14

CAS英文解释是比较和交换,是cpu底层的源语,是解决共享变量原子性实现方案,它定义了三个变量,内存地址值对应V,期待值E和要修改的值U,如下图所示,这些变量都是在高速缓存中的,如果两个线程A,B分别通过cas方式同时修改共享变量,假设当A线程先获取时间

https://static001.geekbang.org/infoq/12/12bac6643fe1771e4a5290d43852ab5d.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

用户头像
马丁玩编程
2020-11-20

文章以 ReentrantLock 作为切入点,讲述了其公平锁和非公平锁的概念,以及对应 AQS 中 CLH、AOS 等不容易被发现的概念

https://static001.geekbang.org/infoq/71/71577b876dc0a7bd224ff185dab67396.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

写时复制集合 —— CopyOnWriteArrayList

用户头像
程序员小航
2020-10-31

JUC 下面还有一个系列的类,都是 CopyOnWriteXXX ,意思是写时复制,这个究竟是怎么回事?那就以 CopyOnWriteArrayList 为切入点,一起了解写时复制是怎么回事?

JUC_JUC技术文章_InfoQ写作社区