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

Java内存模型以及多线程并发深度剖析

文章目录

  • Java内存模型
      • JMM的基本概念
      • 缓存一致性与处理器优化
      • happens-before原则
      • 总结
  • 主内存以及cpu的多级缓存模型的实现原理
      • 主内存(Main Memory)
      • CPU多级缓存模型
        • 实现原理:
  • 多线程并发运行时可能引发的数据不一致问题
  • 总线加锁机制和MESI缓存一致性协议的工作原理
      • 总线加锁机制
      • MESI缓存一致性协议
  • 并发编程中的三大特性:可见性、原子性、有序性
      • 1. 可见性(Visibility)
      • 2. 原子性(Atomicity)
      • 3. 有序性(Ordering)

Java内存模型

Java内存模型(Java Memory Model,简称JMM)是Java平台定义的一种规范,旨在屏蔽各种硬件和操作系统的内存访问差异,确保Java程序在不同的平台上能够达到一致的内存访问效果。它定义了程序中变量的访问规则,特别是关于变量如何在虚拟机中存储到内存以及从内存中读取的底层细节。这有助于实现线程之间的正确交互,尤其是在并发编程中,确保数据的可见性、原子性和有序性。

JMM的基本概念

  1. 主内存与工作内存

    • 主内存:所有实例域、静态域和数组元素存储在这里,它是线程之间共享的。
    • 工作内存:每个线程都有自己的工作内存,存储了该线程从主内存中读取的变量副本。线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,不能直接操作主内存中的变量。
  2. 内存间交互操作

    • JMM定义了8种原子操作来控制主内存与工作内存之间的交互,包括读取、加载、使用、赋值、存储和写入等,这些操作确保了内存的一致性。
  3. 可见性、原子性和有序性

    • 可见性:一个线程修改了主内存中的变量,其他线程能够立即看到这个修改。
    • 原子性:保证基本操作(如简单赋值)不可分割,要么全部执行要么都不执行。</
http://www.lryc.cn/news/384810.html

相关文章:

  • 【JS问题】require相对路径引入模块
  • SAP ABAP 常用实用类
  • 笔记本电脑录屏,教你3个方法,简单录屏
  • A-8 项目开源 qt1.0
  • CNC数控机床如何通过工业智能网关实现远程运维?天拓四方
  • PMP培训,哪个机构的通过率高?
  • 贷款承诺状态映射参数表,用于加工的提示信息
  • 理解 iOS 开发中的 NS_ENUM 和 NS_OPTIONS
  • 2024年6月26日 (周三) 叶子游戏新闻
  • LangChain4j之HelloWorld
  • MySQL 基础概念
  • RabbitMQ 学习笔记
  • 【区分vue2和vue3下的element UI MessageBox 弹框组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • 避而不见!BigDecimal的四大坑
  • IDEA 安装与激活详细教程最新(附最新激活码)2099年亲测有效!
  • LeetCode 100334. 包含所有 1 的最小矩形面积 I
  • pdf只要前几页,pdf怎么只要前几页
  • JAVA JVM 是怎么判定对象已经“死去”?
  • springboot加载注入bean的方式
  • PostgreSQL 数据库设计与管理(四)
  • Studying-代码随想录训练营day21| 669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、二叉树总结
  • GraphQL:简介
  • AI大模型安全挑战和安全要求解读
  • 前端面试题-token的存放位置
  • 深入探讨计算机网络中的各种报文
  • Debezium系列之:Mysql和SQLServer数据库字段类型覆盖测试
  • Mathtype7在Word2016中闪退(安装过6)
  • SQL面试题练习 —— 合并用户浏览行为
  • 【Docker】docker 替换宿主与容器的映射端口和文件路径
  • GPU算力租用平台推荐