JAVA并发高级
文章平均质量分 89
Ethan_199402
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于lettuce的一次pipeline反向优化
lettuce怎么使用pipeline功能,采坑分享原创 2024-08-23 14:24:15 · 1664 阅读 · 0 评论 -
java怎么做一个轻量级的线程池监控?
线程池缺少监控,不要靠猜,靠实力!原创 2024-08-15 13:43:36 · 1287 阅读 · 0 评论 -
一次caffeine引起的CPU飙升问题
caffeine如何使用,采坑经验原创 2024-08-14 13:48:40 · 1757 阅读 · 0 评论 -
《大话处理器》Cache一致性协议之MESI
Cache一致性协议之MESI处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议,奔腾处理器有使用它,很多其他的处理器都是使用它的变种。单核Cache中每个Cache line有2个标志:dirty和valid标志,它们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效,数据是否被修改),而在多核处理器中,多个核会共享一些数据,MESI协议就包含了描述共享的状态。在MESI协议中,每个Cache line有4个状态,可用2个bit表示转载 2021-03-30 16:38:53 · 455 阅读 · 0 评论 -
线程池的核心线程会销毁吗?
今天跟别人讨论了线程池的核心线程会不会销毁的问题先上代码public static void main(String[] args) throws InterruptedException { ThreadPoolExecutor pool = new ThreadPoolExecutor(4,10,5, TimeUnit.SECONDS,new LinkedBlockingDeque<>(20)); //pool.allowCoreThreadTimeOut(true);原创 2020-09-18 11:34:31 · 12950 阅读 · 2 评论 -
面试官:我们聊聊线程池吧
阻塞队列讲原理之前应该先了解一下阻塞队列,之所以是阻塞队列,是因为队列为空时,消费者从队列获取数据将一直阻塞直至队列非空,队列满时生产者往队列插入数据将一直阻塞直至队列非满下面引用《java并发编程的艺术》原文:在阻塞队列不可用时,这两个附加操作提供了4种处理方式抛出异常:是指当阻塞队列满时候,再往队列里插入元素,会抛出 IllegalStateException(“Queue full”) 异常。当队列为空时,从队列里获取元素时会抛出 NoSuchElementException 异常 。返回原创 2020-07-30 14:27:19 · 935 阅读 · 1 评论 -
jdk8优化的工作窃取模式你敢尝试吗
1 什么是工作窃取模式首先澄清一点,很多人认为工作窃取模式是JDK1.8的新特性,这不是正确的说法,而是在JDK 1.7 时,标准类库添加了 ForkJoinPool,作为对 Fork/Join 型线程池的实现,在JDK1.8时进行了优化,使之更好的被开发者所使用。顾名思义,Fork 有 分叉 的意思,而 Join有 合并 的意思。ForkJoinPool 的功能即是如此:Fork 将大任务分割为多个小任务,然后让小任务执行,Join 是获得小任务的结果,然后进行合并,将合并的结果作为大任务的结果 ——原创 2020-07-21 14:15:23 · 925 阅读 · 0 评论 -
大厂面试必会AQS(3)——从Condition源码认识AQS
一 引读对AQS不够了解的同学,请先观看博客《大厂面试必会AQS(1)——从ReentrantLock源码认识AQS》需要首先了解的知识:1.Condition 定义:Condition内部主要是由一个装载线程节点 Node 的 Condition Queue 实现对 Condition 的方法(await, signal等) 的调用必需是在本线程获取了独占锁的前提下 所以 Condition Queue 内部是一条不支持并发安全的单向 queue (这是相对于 AQS 里面的 Sync Que原创 2020-06-18 10:40:08 · 378 阅读 · 0 评论 -
大厂面试必会AQS(2)——从ReentrantReadWriteLock源码认识AQS
读写锁概述看过我上一博文《大厂面试必会AQS(1)——从ReentrantLock源码认识AQS》了解到可重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。读写锁维护了一对锁,一个读锁一个写锁,通过分离读锁和写锁来提高并发能力可以看到ReadWriteLock 接口只提供了读锁和写锁获取这两个方法,原创 2020-06-16 11:24:58 · 351 阅读 · 0 评论 -
大厂面试必会AQS(1)——从ReentrantLock源码认识AQS
AQS初识ReentrantLock是怎么使用的原创 2020-06-12 14:24:54 · 465 阅读 · 0 评论 -
原子操作类AtomicInteger详解——由valatile引发的思考CAS初体验
在我的上一篇原创 2020-06-05 14:19:19 · 373 阅读 · 0 评论 -
并发高级之详解volatile——你看到了多少假象
1.引读我们先从一个demo看起```javapublic class Data {public int a = 1;public static void main(String[] args) { Data data = new Data(); new Thread(() ->{ try { //休眠一秒后修改data.a的值为0 Thread.sleep(1000); data.a =原创 2020-06-04 10:15:01 · 712 阅读 · 10 评论
分享