java并发
文章平均质量分 77
chang_ye98
初听不知曲中意,再听已是曲中人
展开
-
深入浅出AQS源码
个人学习AQS的一点见解,欢迎各位大佬指点交流 文章目录概述流程图内部结构类属性节点acquire方法tryAcquireAddWaiterEnqacquireQueuedshouldParkAfterFailedAcquireparkAndCheckInterruptRelease 方法TryReleaseunparkSuccessor 概述 先翻译一下注释,了解一下该类设计的目的,英文捉急,各位凑活看看 Provides a framework for implementing blocking l原创 2021-11-10 11:40:28 · 465 阅读 · 1 评论 -
线程池学习
线程池学习为什么用需要线程池线程池类结构线程池的核心属性线程池的基本工作原理线程池的各个状态线程池有哪些队列拒绝策略线程提前启动核心线程怎么保持一直存活非核心线程如何实现在 keepAliveTime 后死亡非核心线程能成为核心线程吗?如何终止线程池?Executors 提供了哪些创建线程池的方法?ctl设计的好处 为什么用需要线程池 如果我们在方法中直接new一个线程来处理,当这个方法被调用频繁时就会创建很多线程,不仅会消耗系统资源,还会降低系统的稳定性,一不小心把系统搞崩了,就可以直接去财务那结帐了。原创 2021-09-27 15:52:37 · 444 阅读 · 0 评论 -
volatile关键字
volatile关键字理解概念举个栗子 概念 volatile 通过禁用 CPU 缓存,来保证多线程操作变量时的可见性 在对这个变量的读写,不能使用 CPU 缓存,必须从内存中读取或者写入。 举个栗子 并发操作 a = 1 实现 a++ 不加volatile,从内存读取a=1后,后续的操作(读写)都是在cpu缓存中进行的。 开启两个线程循环调用a++,循环的次数越多,得到的值越接近循环次数本身,因为读入到cpu缓存后一直进行a++操作,而每次的值都是从自己的缓存中取得,只有执行完循环才会写回内存。 ..原创 2021-03-07 10:12:37 · 79 阅读 · 0 评论