juc包系列
文章平均质量分 89
程序员李哈
本平台分享技术帖,某站:李哈zzz分享技术视频
展开
-
JUC并发编程之ArrayBlockingQueue的底层原理
在JUC包下关于线程安全的队列实现有很多,那么此篇文章讲解ArrayBlockingQueue的实现原理。相对于LinkedBlockingQueue和来说,ArrayBlockingQueue效率比较低,但是实现比较容易,从类名也可以看出,这个是基于数组实现的队列。从简单入手,再一步步学习复杂的。JUC并发编程之LinkedBlockingQueue的底层原理JUC并发编程之SynchronousQueue的底层原理// 因为基于数组实现的队列,全局数组// 消费者索引// 生产者索引。原创 2023-02-01 16:45:06 · 387 阅读 · 0 评论 -
JUC并发编程之LinkedBlockingQueue的底层原理
在JUC包下关于线程安全的队列实现有很多,那么此篇文章讲解LinkedBlockingQueue的实现原理,相信各位读者在线程池中能看到或者队列来作为储存任务和消费任务的通道。一个并发安全的队列,在多线程中充当着安全的传输任务的责任。既然是介绍那么从构造方法入手最合适不过。// 初始化一个伪节点,让head和last都指向这个伪节点// 为什么需要伪节点的存在?// 因为可以保证不会发生极端情况(假设没有伪节点,并且只存在一个节点的情况下,生产者和消费者并发执行就可能出现极端情况)原创 2023-02-01 14:55:19 · 342 阅读 · 0 评论 -
JUC并发编程之SynchronousQueue的底层原理
判断当前线程与队列最后一个节点是否是同一个模式(因为在SynchronousQueue队列同一时刻节点都是一样的,如果当前插入的节点不一致,他就是一个匹配节点,反之,如果一致就需要插入到队尾中,阻塞等待,直到轮到他与其他线程做匹配)可以很清楚的看到不管是put还是take方法,他们的统一入口都是transferer.transfer方法,只不过参数不一致,所以也可以明白,内部可能是根据参数来判断当前是消费者还是生产者。以上代码是transfer方法的所有实现,读者先需明白,这个方法是统一的入口。原创 2023-01-31 23:57:29 · 347 阅读 · 0 评论 -
Synchronized底层原理系列之Synchronized的偏向锁实现原理
上篇文章已经对Synchronized关键字做了初步的介绍,从字节码层面介绍了Synchronized关键字,最终字节码层面就是和字节码指令。并且拿Synchronized关键字和Java的JUC包下的ReentrantLock做了比较。Synchronized关键字的初体验-超链接地址那么本篇文章将开始深入解析Synchronized关键字的底层原理,也就是解析Hotspot虚拟机对和字节码指令的实现原理。理论知识。原创 2023-01-14 16:17:07 · 787 阅读 · 1 评论 -
Synchronized底层原理系列之Synchronized的初体验
Synchronized是什么:各位Java读者,对于synchronized关键字并不陌生,在各种中间件源码或者JDK源码中都能看到,对于不熟悉synchronized的读者只知道在多线程中需要使用到synchronized关键字,知道synchronized能够保证线程安全,那么本篇文章带领各位读者对synchronized有一个认识。称之为:互斥锁(同时只能一个线程执行,其他的线程将会等待)又称之为:悲观锁(同时只能一个线程执行,其他的线程将会等待)原创 2023-01-13 14:17:48 · 621 阅读 · 0 评论 -
AQS源码中cancelAcquire()方法详解
首先,先考虑一个问题,什么条件会触发cancelAcquire()方法? 可以清楚的看到在互斥锁和共享锁的拿锁过程中都是有调用此方法的,而cancelAcquire()方法是写在finally代码块中,并且使用failed标志位来控制cancelAcquire()方法的执行。可以得出,在触发异常的情况下会执行cancelAcquire()方法。 可以清楚的看到,这里是响应异常,如果发生了异常,比如中断异常,那么当前线程Node需要做出取消的操作,那么下面详细的说明cancelAcquire()方法。原创 2022-11-08 15:07:51 · 1277 阅读 · 1 评论 -
CopyOnWriteArrayList源码解读
目录前言正文ArrayList的回顾ArrayList和CopyOnWriteArrayList区别CopyOnWriteArrayList源码解读add()新增方法add()新增重载方法remove()移除方法set()修改方法get()读取方法CopyOnWriteArrayList为什么弱一致性总结前言目前也是金三银四跳槽找工作的最好时机,可能很多小伙伴在面试中被面试官问到集合方面的问题,比如有使用过ArrayList吗?ArrayList线原创 2022-02-20 17:28:47 · 389 阅读 · 0 评论 -
ThreadLocal的使用和底层源码解读
前言目前也是金三银四跳槽好时机,各位小伙伴可能都在面临着不同的面试。对于Java后端的小伙伴来说多线程方面的问题肯定必问的。比如你Java的多线程有了解吗?有了解是吧,那你知道ThreadLocal吗?项目中有使用过ThreadLocal吗?ThreadLocal他的作用是什么?ThreadLocal它内部的一个数据结构是什么?等等一系列关于ThreadLocal的问题。所以特意带来一篇关于ThreadLocal的帖子帮助你们!正文ThreadLocal的使用/** * @autho原创 2022-03-05 15:16:26 · 716 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁源码解读
目录前言正文ReentrantLock和ReentrantReadWriteLock的区别ReentrantReadWriteLock的源码解读ReentrantReadWriteLock内部结构解读读锁上锁的实现解读读锁释放锁的实现解读写锁上锁实现解读写锁释放实现解读源码结论总结(方便面试)总结课程推荐前言目前也是金三银四跳槽找工作的好时机。小伙伴们可能在面试的时候被面试官问到很多关于多线程方面一系列的连锁问题。比如你有了解Java的多线程吗原创 2022-02-27 22:34:55 · 457 阅读 · 1 评论 -
ReentrantReadWriteLock读写锁使用
前言各位小伙伴们可能在公司中某天项目经理让你使用读写锁来实现多线程下的读写一致性,也有些小伙伴们在面试的过程中被问到juc包下的读写锁方面的一系列连锁问题。可能基础比较薄弱的小伙伴可以说是见都没见过,所以特意写一篇关于ReentrantReadWriteLock的帖子来帮助大家面试或者是工作中的使用!正文ReentrantLock和ReentrantReadWriteLock的区别ReentrantLock是所有操作都要上锁,所以锁的力度比较大ReentrantReadWriteL原创 2022-02-27 22:37:31 · 493 阅读 · 1 评论 -
CountDownLatch源码解读
前言目前也是金三银四跳槽找工作的最好时机,可能很多小伙伴在面试中被面试官问到Java并发包方面的问题。比如你对Java并发包的了解有多少?有了解是吧,那你在项目中使用过CountDownLatch吗?使用的场景有哪些?对它的原理知道多少?等等一系列问题。所以特意写一篇关于CountDownLatch的源码解读,帮助大家顺利通过面试。正文CountDownLatch使用场景比如说,在多线程情况下,其中一个或多个线程需要等待其他线程执行完毕才能执行。比如执行A业务需要先查B业务和C..原创 2022-02-21 18:21:55 · 1075 阅读 · 0 评论