![](https://img-blog.csdnimg.cn/160d728579724395b995da2be3c78b11.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
并发编程
文章平均质量分 70
并发编程
_Romeo
知无不言,言无不尽。
展开
-
volatile 关键字详解
爆赞volatile 的作用大家都应该知道 volatile 的主要作用有两点:- 保证变量的内存可见性 - 禁止指令重排序那么,什么是内存可见性,什么是指令重排序,以及它们涉及了那些机制呢?下面就让我们来看看吧。在这里提醒一下,各位小伙伴要有个心理准备,就一个 volatile 关键字所涉及的知识点超乎你的想象哟。可见性问题在理解 volatile 的内存可见性前,我们先来看看这个比较常见的多线程访问共享变量的例子。/** * 变量的内存可见性例子 * * @author ...原创 2022-01-24 13:18:11 · 327 阅读 · 0 评论 -
Java并发编程之java.util.concurrent包——Semaphore篇
概念信号量Semaphore一般用来表示可用资源的个数,相当于一个计数器,可类比生活中停车场牌子上面显示的停车场剩余车位数量。当有车开进去的时候, 就相当于申请一个可用资源,可用车位就 -1 (这个称为信号量的 P 操作)当有车开出来的时候, 就相当于释放一个可用资源, 可用车位就 +1 (这个称为信号量的 V 操作)如果计数器的值已经为 0 了,还尝试申请资源,就会阻塞等待,直到有其他线程释放资源(计数器的值是大于等于0的)源码 public Semaphore(int per原创 2021-10-20 13:36:11 · 526 阅读 · 0 评论 -
CurrentHashMap源码详解
J.U.C并发包–HashMap原理红黑树定律:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。HashMap的总结:HashMap是数组+链表构成的,JDK1.8之后,加入了红黑树.HashMap默认数组初始化大小为16,如果瞎设置数字,它会自动调整原创 2021-08-03 16:02:27 · 1026 阅读 · 0 评论 -
Java并发编程之java.util.concurrent包——CountDownLatch篇
概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。源码countDownLatch类中只提供了一个构造器://参数count为计数值public CountDownLatch(int count) { }; 类中有三个方法是最重要的://调用await()方法的线程原创 2021-08-04 14:34:14 · 245 阅读 · 0 评论 -
Java并发编程之java.util.concurrent包——CyclicBarrier篇
概念从字面上的意思可以知道,这个类的中文意思是“循环栅栏”。大概的意思就是一个可循环利用的屏障。它的作用就是会让所有线程都等待完成后才会继续下一步行动。举个例子,就像生活中我们会约朋友们到某个餐厅一起吃饭,有些朋友可能会早到,有些朋友可能会晚到,但是这个餐厅规定必须等到所有人到齐之后才会让我们进去。这里的朋友们就是各个线程,餐厅就是 CyclicBarrier。构造方法public CyclicBarrier(int parties)public CyclicBarrier(in原创 2021-08-04 14:39:22 · 160 阅读 · 0 评论