![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发编程
泡飞
不想秃头
展开
-
干掉面试官3-CPU中的缓存、缓存一致性、伪共享和缓存行填充
文章目录1、 CPU缓存2、 总线锁和缓存锁3、 缓存行4、 缓存一致性协议(如:MESI)5、 伪共享(false sharing)问题6、 伪共享解决方案(如:缓存行填充)6.1 Disruptor为什么这么快?6.2 实验证明6.3 Jdk8中自带注解@Contended7、 总结本篇文章主要介绍CPU缓存相关的内容。 亦是上一遍文章volatile底层原理详解(上) 的延伸和补充。...原创 2020-04-23 23:07:05 · 2388 阅读 · 10 评论 -
干掉面试官2-volatile底层原理详解
文章目录一、volatile的作用1.1、volatile变量的可见性1.2、volatile变量的禁止指令重排序二、volatile的的底层实现2.1、 Java代码层面2.2、字节码层面2.3、JVM源码层面2.4、汇编层面2.5、硬件层面volatile关键字是Java虚拟机提供的最轻量级的同步机制。在多线程编程中volatile和synchronized都起着举足轻重的作用,没有这两者,...原创 2020-04-20 22:02:55 · 1600 阅读 · 0 评论 -
干掉面试官1-synchronized底层原理(从Java对象头说到即时编译优化)
要想理解透synchronized,还要从Java对象头说起。要想能直观的观察到内存布局还要借助一些工具。一、两个好用却不被熟知的工具1.1、字节码查看插件(jclasslib Bytecode viewer)常规观看Java类编译后的class文件的字节码较为复杂,需要将java类编译成class文件,再使用javap -verbose ***.class命令才能查看它的字节码。Idea...原创 2020-03-27 20:33:17 · 2203 阅读 · 1 评论 -
脱掉Java线程状态的衣服
目录目录一、线程的5种状态二、Thread.State枚举类中的BLOCKED、WAITING、TIMED_WAITING三、并发编程中常用的几个jdk中的api的理解,可能面试尝问哦一、线程的5种状态 众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. ...原创 2018-05-18 18:37:12 · 796 阅读 · 2 评论 -
理解AQS原理一之阅读注释
理解AQS原理一之阅读注释为了深入了解AQS运行原理,先读了AbstractQueuedSynchronizer类中大量的英文注释,并对部分进行翻译,以便今后的深入理解。该篇为AQS原理第一篇,主要通过阅读注释简单了解其功能。具体的源码解析会另开文章分析。此篇注释翻译,也会不断更新。自己学习使用,大神勿喷。/** * Provides a framework for implementin...原创 2019-02-15 10:15:52 · 658 阅读 · 0 评论