java多线程内存模型

理解Java多线程并发内存模型 跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。 作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、运动、画画。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。 关于内存模型 内存模型可以看成是系统底层与编程语言. 阅读详情


主存:

对应堆区,方法区(java虚拟机规范把方法区描述为堆的一个逻辑部分,叫non-heap非堆,与堆区分开)。

主存中的内容是线程共享。全局变量,静态变量,常量是线程共享的。


线程工作内存:

对应栈区。

栈区中的内容是线程私有的。局部变量,参数变量是线程私有的。


线程间交互

1. 不同线程间也无法直接访问彼此的工作内存的变量。

2. 线程的对变量的所有操作(读取,赋值)都必须在工作内存中进行。而不能直接操作主存中的变量。

线程使用主存的方法是,在工作内存中保存一份要使用到的主存中的变量的字段。线程间变量值的传递通过主存来完成。

如: 线程A修改一个变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完之后再从主内存进行读取操作,新值传递到了B线程。


参考:

深入理解java虚拟机

Java内存模型以及多线程并发深度剖析 本文介绍Java内存模型及并发编程基础概念 阅读详情

相关推荐

Duplicate Cleaner Pro 5.16 保姆级教程:如何用哈希值精准清理重复文件(附音频/视频模式详解)

本文详细介绍了Duplicate Cleaner Pro 5.16如何利用哈希值技术精准清理重复文件,特别针对音频、视频和图片等多媒体文件提供了专业解决方案。通过哈希算法比对和多媒体特征识别,帮助用户高效管理存储空间,提升文件整理效率。

weixin_27032989的博客 564

Java多线程之内存模型(JMM)

开始CPU是直接和主存进行交互的,但这样会有一个很大的问题,CPU的计算速度非常快,而主存是硬盘操作,比起CPU会慢很多很多,有时候CPU需要等待主存,导致效率很低。Java多线程内存模型是基于Cpu缓存模型建立的,它的作用是屏蔽掉不同硬件和操作系统的内存访问差异,实现各种平台具有一致的并发效果。线程从主内存中读取一个变量到自己的工作内存,线程结束时再把这个变量写回主内存中,是需要经过以下8个操作。这些操作需要按顺序执行,可以不连续执行,比如read和load之间可以夹杂其他操作。

qq_42878176的博客 1404

docker安装的 n8n提示Your n8n server is configured to use a secure cookie, however you are either visiting

将原来的docker n8n进行删除后即可通过一下方式重新安装,如安装完n8n,提示。

满地找牙的博客 3366

Java多线程--内存模型(JMM)--详解

本文介绍Java的内存模型(JMM)。包括:JMM是什么,JMM结构,JMM的特性(线程安全型体现在哪些方面),synchronized的作用,volatile的作用。

IT利刃出鞘的博客 6455

Transformer模型详解(图解最完整版)

Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。

2501_91695094的博客 2699

使用trae自动生成前后端分离的web应用程序

使用ai自动生成前后端分离的web应用程序

一介书生 2524

java多线程与内存模型(一)

主要简单的聊聊 java多线程的内存模型,因为只有知道了JVM帮我们偷偷干了什么,才能写出更安全健壮的多线程并发程序。

IT小小鸟~~ 1261

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 522

java多线程详解一线程的内存模型和线程特性

这几天面试互联网公司的高级java工程师,多线程问的相对而言比较多。所以,从各种角度来看看java中多线程的实现方式。 一:Java内存模型 1.java主内存和工作内存 根据java内存模型,java中所有的变量都存储在主内存中(main memory),每条线程还有自己的工作内存(Working Memory),线程的工作内存中保存了主内存的副本拷贝,线程对所有变量的操作

qzqanzc的博客 1484

Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框

在9.0的系统产品rom定制化开发中,在一些产品中会出现在首次开机的时候,由于在开机动画播放完以后会出现几秒短暂的黑屏情况,然后进入默认Launcher,这在产品体验上 也是感觉到有点差,所以会要求在去掉这个首次开机黑屏的效果,和在启动过程中的 android is starting这个提示框的这些效果优化,接下来就分析下相关功能, 然后实现这个功能的开发

安卓兼职framework和app工程师的博客 3244

科研绘图系列:R语言绘制极坐标饼图(pie plot)

科研绘图系列:R语言极坐标饼图(pie plot)

专注生信领域 1052

Java---线程多(工作内存)和内存模型(主内存)分析

首先解读Java内存模型(这里区别于JVM的内存模型,堆、栈、工作区)   Java 内存模型来屏蔽掉各种硬件和操作系统的内存差异,达到跨平台的内存访问效果。JLS(Java语言规范)定义了一个统一的内存管理模型JMM(Java Memory Model)   Java内存模型规定了所有的变量都存储在主内存中,此处的主内存仅仅是虚拟机内存的一部分,而虚拟机内存也仅仅是计算机物理内存的一部分(为...

weixin_30929011的博客 357

【2025软考高级架构师】基础知识部分——6、软件架构设计

(1)架构是对系统的抽象(2)架构由多个结构组成(3)任何软件都存在架构(4)元素及其行为的集合构成架构的内容(5)架构具有“基础”性(6)架构隐含有“决策”

qq837993702的博客 1万+

一篇文章弄懂Java多线程基础和Java内存模型

文章目录一、多线程的生命周期及五种基本状态二、Java多线程的创建及启动1.继承Thread类,重写该类的run()方法2.通过实现Runnable接口创建线程类3.通过Callable和Future接口创建线程三、Java内存模型概念四、内存间的交互操作五、volatile和synchronized的区别 写在前面:提起多线程大部门同学可能都会皱起眉头不知道多线程到底是什么、什么时候可以用到、用...

境里婆娑 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java 多线程内存模型

首先解读Java内存模型(这里区别于JVM的内存模型,堆、栈、工作区)   Java 内存模型来屏蔽掉各种硬件和操作系统的内存差异,达到跨平台的内存访问效果。JLS(Java语言规范)定义了一个统一的内存管理模型JMM(Java Memory Model)   Java内存模型规定了所有的变量都存储在主内存中,此处的主内存仅仅是虚拟机内存的一部分,而虚拟机内存也仅仅是计算机物理内存的一部分(为...

C18298182575的博客 291

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java 多线程的内存模型

Java 多线程的内存模型 JMM是是Java的内存模型,和JVM的内存模型是两回事(Java Runtime Data Area) 内存模型图如下 当多线程进行数据交互的时候,比如线程A修改了共享变量,线程B读取读,A修改完变量在自己的工作内存中,B是看不到(或者说感知不到A的修改),只有A的工作区协会到主内存,B再从主内存读取自己的工作区才能进一步操作,因为指令重排序的存在,这个写读的顺序可能被打乱,所以JMM需要提供原子性,可见性,有序性的保证。 原子性 一个操作不能被打断,要么执行成功,要么执行失

温柔有多温柔。 228

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

一文读懂Java多线程并发之内存模型

Java内存模型(Java Memory Model)描述了Java编程语言中的线程如何与内存进行交互,是和多线程相关的一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。有了这些规范,即便同一个程序在不同操作系统的虚拟机上运行,得到的程序结果也是一致的。如果没有这些规范,不同操作系统的虚拟机对相同关键字的解释不一致,这是不可接受的。JMM旨在解决 CPU 多级缓存、处理器优化、指令重排等导致的结果不可预期的问题。

ningkangming的博客 894

Java多线程内存模型总结

Java多线程内存模型        1.并发线程间的通信机制有两种: 共享内存和消息传递            a.共享内存和消息传递的区别:                      共享内存:线程间有公共状态,通过读写内存中的公共状态隐式通信                      消息传递:线程间没有功能状态,线程间通过发送消息显示通信            Java线程使用的是共享内存...

架构源启的博客 1554

Java多线程学习之内存模型

目录 1. Java的内存模型 1.1 JVM内存结构 1.2 多线程下Java的内存模型 1.3 多线程的不可见问题 1. Java的内存模型 1.1 JVM内存结构 Java中的每个线程拥有独立的栈空间,但是同一个进程中的多线程共享一块堆内存,JVM的内存结构: 1)程序计数器:每个线程私有的,当前线程执行字节码的行号指示器 2)虚拟机栈:每个线程被分配一段栈,线程...

sysong13的博客 199

JAVA多线程编程——JAVA内存模型

一、何为“内存模型”   内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节,对象最终是存储在内存里面的,但是编译器、运行库、处理器或者系统缓存可以有特权在变量指定内存位置存储或者取出变量的值。 二、JMM(Java Memory Model)即Java内存模型的作用 JMM的最初目的是为

jinguoying555的博客 2124

java内存模型作用_一篇文章弄懂Java多线程基础和Java内存模型

一篇文章弄懂Java多线程基础和Java内存模型时间:2020-05-30 09:28浏览次数:发布者:文章来源于网络来源:网络转载0一、多线程的生命周期及五种基本状态Java多线程生命周期,首先看下面这张经典的图,图中基本上囊括了Java中多线程重要知识点。Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new My...

weixin_34184847的博客 187

Java多线程——内存模型

对于如下代码,可能输出(0,1)/(1,0)/(1,1)/(0,0)

松仔Log的博客 495

java 多线程 内存_Java多线程与内存模型的关系

很多时候我们通过单个线程来执行就没问题,如果通过多个线程来执行就出现了问题,为什么呢?多个线程来执行就出现了问题一、初看Java内存模型一次执行单个语句或表达式,即通过单个线程来执行。Java虚拟机可以同时支持多个执行线程,若未正确同步,线程的行为可能会出现混淆和违反直觉。当多个线程修改了共享内存中的值时,应该读取到哪个值的规则。由于这部分规范类似于不同硬件体系结构的内存模型,因此这些语义称为Ja...

weixin_34157892的博客 173

Java内存模型(JMM)是基于多线程的吗

编程严选网(www.javaedge.cn),程序员的终身学习网站已上线!后端技术】、【前端领域】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【JavaGPT】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💝💝💝!

JavaGPT的博客 1073

【Java】多线程内存模型

事先说明 本文主要参考 《深入理解Java虚拟机 第二版》和 Jakob Jenkov所写的博文,用Java虚拟机中所提到的概念诠释博文中的多线程内存模型。如有不妥之处,还希望各位老哥不惜指正。 概念讲解 简单来说,Java虚拟机将内存划分为两大类,一类是每个线程私有的内存区:JVM 栈(JVM Stack)、本地方法栈(Native method Stack)和程序计算器,第二类是所有线程能够共用的:堆(Heap)和方法区(method area)。 在多线程变量内存模型中,所要关注的概念就是JVM栈

12Dong的博客 265

深度解析Java多线程的内存模型

内部java内存模型 硬件层面的内存模型 Java内存模型和硬件内存模型的联系 共享对象的可见性 资源竞速 Java内存模型很好的说明了JVM是如何在内存里工作的,JVM可以理解为java执行的一个操作系统,作为一个操作系统就有内存模型,这就是我们常说的JAVA内存模型。 如果我们想正确的写多线程的并行程序。理解好java内存模型在多线程下的工作方式是及其重要的,这可以帮我们...

WGH100817的博客 131
上一篇: java类加载器
下一篇: java 垃圾回收
javalive09
博客等级 码龄16年 43粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值