Java虚拟机
文章平均质量分 58
努力不停努力
我要成为自己眼中最耀眼的一束光
展开
-
volatile关键字
一个volatile变量,它将具备两项特性:保证此变量对所有线程的可见性。当一个线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。由于Java里面的运算操作符并非原子操作,导致volatile变量的运算在并发下一样是不安全的。禁止指令重排序优化,普通的变量仅会保证在该方法的执行过程中所有依赖赋值结果的地方都能获取到正确的结果,而不能保证变量赋值操作的顺序与程序代码中的执行顺序一致。具体见《深入理解Java虚拟机第三版》第12章...原创 2021-03-03 14:31:52 · 71 阅读 · 2 评论 -
java虚拟机类加载
参考《深入理解java虚拟机第三版》 第七章自己看的时候的一些混淆点:“加载”和“类加载”不是一个概念,“加载”是“类加载”的第一步;类加载过程包括 加载、验证、准备、解析、初始化。验证、准备、解析统称为连接。对类进行初始化前加载、验证、准备必须已经开始,而解析在某些情况下可以在初始化阶段后再开始(动态绑定机制(多态、方法重写))类加载的准备阶段会为类的静态变量(static)分配内存并设置类初始值,这里的初始值是初始0值,int置0,boolean置false,引用类型reference置nul原创 2021-03-02 22:39:04 · 95 阅读 · 0 评论 -
Java虚拟机:静态分派和动态分派
参考资料《深入理解java虚拟机(第3版)》目录静态分派和重载重载方法匹配优先级动态分派与重写字段永远不会参与多态静态分派是多分派,动态分派是单分派静态分派和重载public class StaticDispatch { static abstract class Human { } static class Man extends Human { } static class Woman extends Human{ } publi原创 2021-02-28 15:52:12 · 248 阅读 · 2 评论