Java高并发
进击的Coder*
这个作者很懒,什么都没留下…
展开
-
【 超赞 】清晰认识ThreadFactory
学习JUC框架时,线程池是无法避免的话题。通常情况下,我们会采用默认的ThreadFactory构建线程池。那么,在线程池中,ThreadFactory的作用到底是什么呢?原创 2021-10-11 15:18:51 · 5484 阅读 · 3 评论 -
超详细:ReentrantLock非公平锁的Lock流程(代码含详细注释)
ReentrantLock.NonfairSync继承自内部类Sync。 static final class NonfairSync extends Sync { private static final long serialVersionUID = 7316153563782823691L; // 首先尝试立即获取锁,获取成功,则将自身设定为 独占模式的同步器 的拥有者 // 如果获取失败,则通过调用AQS.acquire(原创 2021-09-14 12:07:47 · 268 阅读 · 0 评论 -
可重入锁ReentrantLock !!!(逐步更新)
ReentrantLock和Synchronized关键字具有相同的基本行为和语义,但是,ReentrantLock具备更好的可扩展性。ReentrantLock实现了Lock接口:public class ReentrantLock implements Lock, java.io.Serializable底层操作其实是基于AQS(AbstractQueuedSynchronizer)实现的,ReentrantLock内部封装了一个继承AQS的静态抽象类Syncabstract sta原创 2021-05-05 22:42:05 · 91 阅读 · 0 评论 -
JUC高并发:线程池中的ArrayBlockingQueue和LinkedBlockingQueue
线程池的阻塞队列有多种实现可选,这里仅介绍ArrayBlockingQueue和LinkedBlockingQueue(鼓励大家多看源码的一些注释,讲的很清楚)目录ArrayBlockingQueueLinkedBlockingQueueArrayBlockingQueue部分源码LinkedBlockingQueue部分源码ArrayBlockingQueue有界,在创建的时候指定了大小,创建后,大小不可再更改 底层通过object数组存储 采用FIFO机制 队头是等待最原创 2021-05-04 23:21:27 · 1327 阅读 · 0 评论 -
一篇文章搞懂AQS!!!(持续更新)
AQS的核心思想如果当前共享资源是空闲的,那么便会将请求资源的这个线程设为工作线程,并把资源的状态设置为锁定状态;如果资源正在被占用,那么就将请求的线程加入到工作队列(CLH队列中),等待唤醒。CLH队列结构AQS类的一些重要的字段private volatile int state:同步状态(The synchronization state)(Exclusive和Share两种状态,分别来表明是独占的,还是共享的)private transient volatile Node h原创 2021-05-03 18:27:13 · 271 阅读 · 0 评论