java enum 线程安全_enum枚举类为什么线程安全-附字节码查看方式

2023-05-16

单例可以用枚举类来实现,且线程安全。那么,为什么它就是线程安全的呢? 设计一个枚举类Day.java文件,如下:

//定义枚举类型

public enum Day {

MONDAY, TUESDAY, WEDNESDAY,

THURSDAY, FRIDAY, SATURDAY, SUNDAY

}

执行如下命令:

javac Day.java, 生成 Day.class。

直接cat 查看该class文件的话,会发现其乱码。

反编译该class文件: javap -c Day.class

结果如下:

public final class Day extends java.lang.Enum {

public static final Day MONDAY;

public static final Day TUESDAY;

public static final Day WEDNESDAY;

public static final Day THURSDAY;

public static final Day FRIDAY;

public static final Day SATURDAY;

public static final Day SUNDAY;

public static Day[] values();

Code:

0: getstatic #1 // Field $VALUES:[LDay;

3: invokevirtual #2 // Method "[LDay;".clone:()Ljava/lang/Object;

6: checkcast #3 // class "[LDay;"

9: areturn

...(省略)

简要分析

该类Day.java 是继承了Enum类的,同时被final关键字修饰:这个类是不能被继承的。

同时,

static类型的属性会在类被加载之后被初始化,当一个Java类第一次被真正使用到的时候静态资源被初始化、Java类的加载和初始化过程都是线程安全的

所以,创建一个enum类型是线程安全的。

扩展

为什么说enum在序列化、反序列化的时候特殊性

枚举类型在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中,反序列化的时候则是通过java.lang.Enum的valueOf方法来根据名字查找枚举对象

idea 反编译插件

插件名:asm bytecode outline

331256f0fb98d067af53b31b7e1361ae.png

7226390836cf3b3a9939a8a8425634b4.png

如上图所示操作,即可显示出如上图右侧的反编译后的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java enum 线程安全_enum枚举类为什么线程安全-附字节码查看方式 的相关文章

  • [Hadoop 周边] 浅谈大数据(hadoop)和移动开发(Android、IOS)开发前景【转】

    原文链接 xff1a http www d1net com bigdata news 345893 html 先简单的做个自我介绍 xff0c 我是云6期的 xff0c 黑马相比其它培训机构的好偶就不在这里说 xff0c 想比大家都比我清楚
  • 无代理防毒:虚拟化与安全的深度融合

    当今 xff0c 用户对虚拟化和云计算平台的需求正在呈现爆发趋势 然而 xff0c 虚拟化技术其实是一把双刃剑 xff0c 它具有更高效率地利用计算 存储资源等优势 xff0c 但这些优势都依赖于虚拟化系统资源高度集中的特性 xff0c 但
  • 计算机专业找工作注意什么

    为什么80 的码农都做不了架构师 xff1f gt gt gt http www java sh Sharing qzjq 1722 html 几年前市场对计算机专业人才的需求非常大 xff0c 计算机专业红得发紫 xff0c 毕业生是 皇
  • 解析Linux C/C++开发的难度到底在哪

    解析Linux C C 43 43 开发的难度到底在哪 经常被问到的问题 如何学习C 43 43 如何学习Linux 如何开始 xff1f 其实这个问题对于不同的人答案往往不尽相同 xff0c 每个人所处的环境就不同 一个普遍的现象是有一些
  • 在局域网内实现https安全访问

    在局域网内实现https安全访问 准备原料 服务器 resin xff08 当然也可以是tomcat xff0c 这里以resin为例 xff09 安装jdk 域名 xff08 随便写一个就行 xff0c 因为是内网使用 xff0c 不会被
  • GWAS | 全基因组关联分析 | PLINK | 实战 | 统计遗传学

    参考 xff1a PLINK File format reference vcftools plink的主要功能 xff1a 数据处理 xff0c 质量控制的基本统计 xff0c 群体分层分析 xff0c 单位点的基本关联分析 xff0c
  • 七周七语言——Prolog(二)

    1 递归 首先来看一个知识库 xff1a father zeb john boy sr father john boy sr john boy jr ancestor X Y father X Y ancestor X Y father X
  • 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说 直接上代码 1 html lt form action 61 34 bcis api headImgUpload json 34 method 61 34 post 34 enctype 61 34 multipart form
  • 如何提取到网页上播放的视频

    1 在播放视频页面的空白处点击右键 xff0c 会弹出菜单 xff0c 在菜单中选择审查元素 2 弹出的页面如图所示 xff0c 我们点击第二个network 3 利用size这一栏点击一下他就会按照文件大小就可以查找到视频 xff0c 一
  • Nodejs如何调用Dll模块

    苏格团队作者 xff1a Tomey 一 为什么需要用node js调用dll xff1f 公司项目采用Electron xff08 electronjs org xff09 开发pc应用 xff0c 会涉及到与底层硬件设备的通信 xff0
  • PyShark入门(1):简介

    原文地址 xff1a http zodiacg net 2016 07 in 本系列文章译自thePacketGeek的系列文章 原创翻译 xff0c 转载请注明出处 文章作者以PyShark为基础开发了Cloud Pcap xff0c 一
  • 将元素添加到List集合的第一位

    2019独角兽企业重金招聘Python工程师标准 gt gt gt list add 1 object 看一下add方法的注释 Inserts the specified element at the specified position
  • KMS激活时,常见的错误及处理

    0x80072EFE 出现这种是错误因为服务器响应超时或与服务器连接已丢失 xff0c 网络连接的问题 解决方法 xff1a 暂时关闭防火墙和杀毒软件 xff0c 将网卡禁用再启用 xff0c 确保网络是通的 0x8007232B 过 30
  • 精彩网页

    新华网美国频道 xff1a http us xinhuanet com php加密网址 xff1a https www phpjiami com 转载于 https www cnblogs com net5x p 6570727 html
  • java集合类(二)List学习

    接上篇 java集合类 xff08 一 xff09 List接口继承了Collection接口和Iterable接口 xff0c 即同样含有Collection和 Iterable的特性 xff0c 还有方法 xff0c 其基本方法有 xf
  • 构建安全的数据访问-部署注意事项(九)

    部署注意事项 以安全方式设计和开发的数据访问组件如果不以安全的方式进行部署 xff0c 仍然容易受到攻击 常见的部署做法是使数据访问代码和数据库驻留在单独的服务器上 这些服务器通常由内部防火墙隔开 xff0c 这就引进了额外的部署注意事项
  • matlab练习程序(随机直线采样)

    我只是感觉好玩 xff0c 写了这样一段程序 原理就是先随机生成两个点 xff0c 然后根据这两个点画直线 xff0c 最后在直线上的像素保留 xff0c 没在直线上的像素丢弃就行了 最后生成了一幅含有很多空洞的图像 当然 xff0c 对含
  • 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善 xff0c 整理了这些年引擎开发的一些资料 xff0c 无意中发现06年写的一个麻将算法 xff0c 编译运行了一下 xff0c 还是有点意思的 xff0c 拿出来整理一下分享给大家
  • 使用SP Racing F3飞控&ROSflight软件包的无人机自主飞行系统

    搭建四旋翼系统 机架 xff1a XR215 Plus 328 分线板 xff1a XR215 Plus PDB 飞控 xff1a SP Racing F3 标准版 xff08 Acro xff09 86 电机 xff1a 银燕RS2205
  • PostMan使用手册

    Postman 使用手册系列教程 xff1a Postman软件安装 Postman使用手册1 导入导出和发送请求查看响应 Postman使用手册2 管理收藏 Postman使用手册3 环境变量 Postman使用手册4 API test

随机推荐