摘要:
先来提出问题和给出答案,之后再刨根问底的揭开面纱: 问:volatile 的可见性和禁止指令重排序是怎么实现的? 答:可见性:是通过缓存一致性协议来达到的 禁止指令重排序:JMM 模型里有 8 个指令来完成数据的读写,通过其中 load 和 store 指令相互组合成的 4 个内存屏障实现禁止指令重 阅读全文
posted @ 2020-04-28 16:10
星火燎原智勇
阅读(733)
评论(1)
推荐(3)
摘要:
来看一道笔试题: 模拟一个容器,有 2 个线程生成数据写入,10 个线程消费的生产者消费者模型 阅读全文
posted @ 2020-04-28 10:27
星火燎原智勇
阅读(245)
评论(0)
推荐(0)
摘要:
CLH 队列 CLH同步队列是一个FIFO双向队列,AQS 依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node)并将其加入到CLH同步队列,同时会阻塞当前线程,当同步状态释放时,会把首节点唤醒(公平锁),使其再次尝试获取同步状态 阅读全文
posted @ 2020-04-28 10:19
星火燎原智勇
阅读(2959)
评论(1)
推荐(0)
摘要:
背景 这篇博文是接着上一篇 线程池专题 的一个补充,是针对线程池底层队列的种类做一个进一步的深入详解,上一篇博文主要针对一线大厂针对线程池的灵魂 5 问展开的,而这一篇也是综合了另外面试经验,把底层的一些内容再深入剖析一下。 线程池任务处理 如果运行的线程数 < corePoolSize,则 Exe 阅读全文
posted @ 2020-04-28 01:22
星火燎原智勇
阅读(1482)
评论(0)
推荐(0)

浙公网安备 33010602011771号