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

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
http://www.xdnf.cn/news/7675.html

相关文章:

  • 【工程篇】03:Miniconda安装
  • DAY31-文件的规范拆分和写法
  • 现代计算机图形学Games101入门笔记(十七)
  • Python Pandas库简介及常见用法
  • Nature 子刊排名(2025 版)
  • Java从入门到精通 - 案例专题
  • nRF Connect SDK开发之(1)环境搭建
  • 一文掌握 LoRA 常见变体
  • SpringBoot集成Jasypt对数据库连接密码进行加密、解密
  • vue2的项目登录逻辑
  • Java核心基础知识点全解析:从语法到应用实践
  • python-leetcode 69.最小栈
  • 【华为OD- B卷 - 增强的strstr 100分(python、java、c++、js、c)】
  • 连接Redis数据库
  • 初识Linux · 数据链路层
  • PyTorch图像识别模型和图像分割模型体验
  • 【Java 反射的使用】
  • (T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复
  • Python训练营---Day31
  • 大模型幻觉
  • CAN总线
  • mbed驱动st7789屏幕-硬件选择及连接(1)
  • TDengine 更多安全策略
  • (二十四)Java网络编程全面解析:从基础到实践
  • 基于python的花卉识别系统
  • Playwright+Next.js:实例演示服务器端 API 模拟新方法
  • 从私有化到容器云:iVX 研发基座的高校智慧校园部署运维全解析
  • 多头注意力机制和单注意力头多输出的区别
  • 大型商业综合体AI智能保洁管理系统:开启智能保洁新时代
  • 麒麟系统编译osg —— 扩展篇