
并发编程J.U.C
文章平均质量分 92
分布式与高并发——并发编程J.U.C
钱多多_qdd
请你爱自己,也爱生活
展开
-
探索线程安全背后的本质——volatile
一、一个问题引发的思考二、什么是可见性三、什么是有序性四、 volatile是怎么解决可见性和有序性的呢三、引出了MESI的一个优化四、软件层面五、volatile原理六、Happens-Before模型...原创 2021-03-19 01:24:01 · 241 阅读 · 3 评论 -
线程基础阶段性总结和扩展(一)
一、线程基础回顾二、死锁2.1 死锁发生的条件2.2 如何解决死锁问题三、Thread.join四、面试题五、ThreadLocal单开一篇,详情请见:原创 2021-03-23 22:15:40 · 124 阅读 · 0 评论 -
了解多线程的意义和作用
一、什么是线程二、并行与并发三、java中的线程3.1线程的三种方式四、线程的基础4.1线程的生命周期4.2 Java 的线程有多少状态: 6种(操作系统中线程的状态)4.3线程的启动4.4线程的终止4.5interrupt()的作用...原创 2021-03-08 00:14:27 · 1736 阅读 · 1 评论 -
线程基础阶段性总结和扩展(二)——ThreadLock
一、ThreadLock作用二、TreadLock原理分析2.1 set(T)原创 2021-03-28 02:45:56 · 672 阅读 · 0 评论 -
并发编程的挑战——sychronized锁
一、并发编程常见的问题可见性 原子性二、锁三、锁的存储四、锁的升级五、线程的通信原创 2021-03-11 02:30:02 · 419 阅读 · 2 评论 -
说说Thread的interrupt()
一、interrupt()、isInterrupt()、interrupted()可以参考我前面的文章4.4.2节:了解多线程的意义和作用二、interrupt()的作用与使用一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运行,应该由被通知的线程自己原创 2021-05-24 23:09:26 · 1326 阅读 · 0 评论 -
证明线程池ThreadPoolExecutor的核心线程数,最大线程数,队列长度的关系
关于线程池的几个参数,很多人不是很清楚如何配置,他们之间是什么关系,我用代码来证明一下。package www.itbac.com;import java.util.concurrent.*;public class ExecutorTest { public static void main(String[] args) { // 创建线程池 , 参数含义 :(核心线程数,最大线程数,加开线程的存活时间,时间单位,任务队列长度) Thre转载 2021-02-02 16:03:55 · 3451 阅读 · 0 评论 -
线程池的实现原理分析
前言本章重点:线程池如何应用AQS 线程池各个入参的含义 Java中提供了哪几种线程的实现,分别适合应用在什么场景 一、什么是线程池在 Java 中,如果每个请求到达就创建一个新线程, 创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了解决这个问题,就有了线程池的概念,线程...原创 2021-07-20 01:46:25 · 287 阅读 · 1 评论 -
ConcurrentHashMap深入分析(特别重要)
前言之前有写过ConcurrentHashMap的分析:ConcurrentHashMap源码(JDK1.8)非常建议看一看,有些方面比本篇内容要讲的详细,本篇内容可以看成是这篇文章的补充(除了第一节put方法)一、put方法源码分析其实之前有写过put方法的解析:废话不多说,先贴putVal代码:final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == nu.原创 2021-07-15 01:53:03 · 368 阅读 · 1 评论 -
CountDownLatch分析(AQS共享锁)
CountDownLatch 是一个同步工具类,它允许一个线程或多个线程一直等待,知道其他线程的操作执行完毕再执行。从命名可以解读到 countDown 是倒数的意思,类似于我们倒计时的概念。CountDownLatch提供了两个方法:await()和countDown();countDownLatch 初始化的时候需要传入一个整数,在这个整数倒数到 0 之前,调用了 await 方法的程序都必须要等待,然后通过 countDown 来倒数。一、Demopublic static void m原创 2021-06-29 01:26:42 · 643 阅读 · 1 评论 -
BlockingQueue原理分析(ReentrantLock、Condition的实践)
BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue等,原创 2021-06-26 02:51:58 · 475 阅读 · 1 评论 -
常见并发工具的使用和原理解析——Condition(重点在第五节)
一、Condition介绍Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线程间协作。Condition是个接口,基本的方法就是await()和signal()方法;Condi.原创 2021-06-23 02:02:01 · 475 阅读 · 1 评论 -
理解J.U.C中的ReentrantLock
一、Lock接口二、ReentrantLock三、思索实现以及实现源码原创 2021-06-07 23:48:52 · 194 阅读 · 0 评论