当前位置: 首页 > news >正文

JAVA虚拟机有义务保证<clinit>()方法的线程安全

JAVA虚拟机有义务保证()方法的线程安全

import java.util.concurrent.atomic.AtomicBoolean;public class ClinitThreadTest {public static void main(String[] args) {// 创建并启动两个线程,每个线程都执行 ClinitObject 的初始化(即 new ClinitObject())new Thread(ClinitObject::new).start();new Thread(ClinitObject::new).start();}// 静态内部类 ClinitObjectstatic class ClinitObject {// 声明一个静态的 AtomicBoolean 变量 flag,并初始化为 trueprivate static AtomicBoolean flag = new AtomicBoolean(true);// 静态代码块,在类加载时执行static {// 打印当前线程名称和类初始化开始的信息System.out.println(Thread.currentThread().getName() + "ClinitObject init");// 一个死循环,只有当 flag 变为 false 时才会退出while (flag.get()) {}// 打印当前线程名称和类初始化结束的信息System.out.println(Thread.currentThread().getName() + "ClinitObject init end");}}
}
Thread-0ClinitObject init
Process finished with exit code 130

相关文章:

  • onlyoffice 源码 调试说明 -ARM和x86双模式安装支持
  • # YOLOv5:目标检测的新里程碑
  • 【计算机方向海外优质会议推荐】第二届图像处理、机器学习与模式识别国际学术会议(IPMLP 2025)
  • OpenHarmony 5.0设置应用设置手势导航开关打开后重新关闭导航栏和设置界面重合
  • 【漫话机器学习系列】269.K-Means聚类算法(K-Means Clustering)
  • 【C++】vector模拟实现
  • 优化model我们可能会怎么做(具体)
  • 正则表达式进阶(三):递归模式与条件匹配的艺术
  • HarmonyOS5云服务技术分享--云存储SDK文章整理
  • 数据库基础
  • 【[特殊字符] Vue 3 实现动态加载子组件并缓存状态完整指南】
  • uniapp生成的app,关于跟其他设备通信的支持和限制
  • 48、c# 中 IList 接⼝与List的区别是什么?
  • 深入解析Spring Boot与Redis的缓存集成实践
  • Spark Core基础与源码剖析全景手册
  • Java转Go日记(四十一):Gorm删除
  • 【iOS】类结构分析
  • 中间件-seata
  • [Linux] Linux线程信号的原理与应用
  • (二十四)Java网络编程全面解析:从基础到实践
  • 英国研究:近七成年轻人认为上网有害心理健康
  • “集团结婚”:近百年前革新婚俗的尝试
  • 央企通号建设集团有限公司原党委常委、副总经理叶正兵被查
  • 83岁山水花鸟画家、书法家吴静山离世,系岭南画派代表人物
  • 首届中国人文学科年度发展大会启幕,共话AI时代人文使命
  • 网警打谣:传播涉刘国梁不实信息,2人被处罚