那时你怎么说
你说对我的牵挂一朵朵
尤其是在犯困的夏日午后
那时你怎么说
你说大雨都是乌云在解脱
叫我赶紧回家钻进被窝

首先需要肯定的是:new操作不是原子操作!

public class Demo2 {public static void main(String[] args) {Demo2 demo2 = new Demo2();}
}

直接看main方法的字节码

重点4行字节码

0 new #2 <work/Demo2>
3 dup
4 invokespecial #3 <work/Demo2.<init>>
7 astore_1

new—创建一个对象,并将其引用值压入栈顶。

dup—复制栈顶一个字长的数据,将复制后的数据压栈。

invokespecial—编译时方法绑定调用方法。

也就是进行对象的初始化,调用构造方法

0 aload_0
1 invokespecial #1 <java/lang/Object.<init>>
4 return

aload_0—从局部变量0中装载引用类型值入栈,其实就是this操作
每个非静态方法,局部变量表index=0的位置永远存放的都是this

mian方法会弹出栈顶元素作为this对象

astore_1—将栈顶引用类型值保存到局部变量1中。

哪个是局部变量1?


完成变量demo2赋值操作

总结

new一个对象看起来是一行代码,但在内部实际性进行了4步操作,是非原子性的。

这也是为什么DCL双重检查需要volitile禁止指令重排序

文章持续更新,可以微信搜索「 绅堂Style 」第一时间阅读,回复【资料】有我准备的面试题笔记。
GitHub https://github.com/dtt11111/Nodes 有总结面试完整考点、资料以及我的系列文章。欢迎Star。

new一个对象竟然不是原子操作?相关推荐

  1. 【腾讯Bugly干货分享】那些年,我们一起写过的“单例模式”

    题记 度娘上对设计模式(Design pattern)的定义是:"一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结."它由著名的"四人帮",又称 ...

  2. 那些年,我们一起写的设计模式(一)——单例模式(Singleton Pattern)

    题记 *度娘上对设计模式(Design pattern)的定义是:"一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结."它由著名的"四人帮",又 ...

  3. 那些年,我们一起写过的“单例模式”

    题记 *度娘上对设计模式(Design pattern)的定义是:"一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结."它由著名的"四人帮",又 ...

  4. 那些年,我们一起写过的单例模式

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载. 原文地址:https://mp.weixin.qq.com/s/wEK3UcHjaHz1x-iXoW4_VQ [CS ...

  5. 深入理解Python元类(原创)

    同样效果的代码: def __init__(cls,cls_name,cls_bases,cls_dict):type.__init__(cls,cls_name,cls_bases,cls_dict ...

  6. 今日头条面试官竟然问我new一个对象背后发生了什么?这太难了...

    来源:https://url.cn/5V55xBu 一.  前言 Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载. 加载并初始化类完 ...

  7. 用了这么久 IDEA,你竟然不知道有个功能叫自动补全!

    点击关注公众号,Java干货及时送达 来源:dwz.cn/hlQEDFne IDEA 有个很牛逼的功能,那就是后缀补全(不是自动补全),很多人竟然不知道这个操作,还在手动敲代码. 这个功能可以使用代码 ...

  8. CAS、原子操作类的应用与浅析及Java8对其的优化

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:CoderBear juejin.im/post/5c7a8 ...

  9. Java:new一个对象的过程中发生了什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 cnblogs.com/JackPn/p/93861 ...

最新文章

  1. 选带傅里叶变换(zoom-fft)
  2. java中日期计算2月份_计算两日期间2月29日总数的Java程序
  3. C++this指针的用法
  4. python matplotlib画图改变图标题和坐标轴标题的字体大小
  5. 匹配正则_程序员入门基础:python正则表达式贪婪匹配和非贪婪匹配
  6. java jersey client,如何在Jersey-Client Java中实现重试机制
  7. java.lang.IllegalStateException崩溃处理——4种情形
  8. ERStudio 安装
  9. Android Audio - HAL 层多声卡同时录音框架设计(多语言)
  10. Tekla二次开发入门经典例子
  11. ZigBee协调器和终端通信
  12. python tensorflow 以图搜图_以图搜图系统工程实践
  13. 点击箭头 切图 html,css写箭头
  14. welearn考试切屏会有显示吗_welearn班级测试答案
  15. 通过EasyPOI导入excel数据
  16. rocky linux 8.5 基本设置
  17. 计算机手动配置信息,手动修改并设置电脑开机画面入您所愿
  18. 图像去模糊(维纳滤波)
  19. 【软件测试】黑盒测试方法小结
  20. 数据分析之噪声值处理

热门文章

  1. iphone map(地图)的实现
  2. 【邢不行|量化小讲堂系列23-Python量化入门】不用再自己写技术指标了 | TA-lib视频教程
  3. Jzoj5407 Deep
  4. 华为云“828 B2B企业节”,积木易搭云速3D云展与您不见不散
  5. 【每日早报】2019/06/27
  6. Horizon 客户端文件夹重定向权限限制
  7. windows10解决“office2016首要事项闪退”的问题
  8. 有些弹出窗口截图截不了怎么办
  9. 东软李林峰 技术总结
  10. java 黑白皇后算法_不思议迷宫黑白皇后怎么样 值得培养吗