【一文搞懂JVM的内存屏障】

news2024/11/17 22:27:35
要命的问题: 什么是线程的安全性?怎么保证?jvm什么是的内存屏障?他有什么作用?

**线程的安全性是指:**指在多线程环境下,多个线程同时访问同一资源时不会产生意外结果或导致数据出错的状态。其实就是保证共享数据操作的三个方面:原子性、可见性、有序性。

java语言层面的基本保障操作:
volatile:可见性、有序性
synchronized:原子性、可见性、有序性
native类:unsafe

扫盲一下:JVM层面【这里不是java语言层面】 的内存屏障有以下4种:

1、LoadLoad屏障: 有两条Load指令load1、load2,一前一后,如果jvm禁止了这两条指令重排序,那就会转变成load1、loadload、load2这样的指令,load2及后续的操作要等load1执行完。

2、StoreStore屏障: 有两条Store指令store1、store2,一前一后,如果jvm禁止了这两条指令重排序,那就会转变成store1、storestore、store2这样的指令,store2及后续的更改操作要等store1指令执行完。

3、LoadStore屏障: 有两条指令load1、store2,一前一后,如果jvm禁止了这两条指令重排序,那就会转变成load1、loadstore、store2这样的指令,store2及后续的更改操作要等load1指令执行完。

4、StoreLoad屏障: 有两条指令store1、load2,一前一后,如果jvm禁止了这两条指令重排序,那就会转变成store1、storestore、load2这样的指令,load2及后续的更改操作要等store1指令执行完。

认识一下java字节码文件的汇编指令:
在这里插入图片描述

Load:对应 读操作;Store:对应 更改操作。

打个比方:我不想让排好队的队伍出现有插队或者前后调换顺序的情况出现,我就给队伍的可能出现这种情况,爱搞事情的每个人前后都加个隔板把他们隔离、固定起来,咋样?虽说很笨重,但是效果很稳。这个隔板就相当于这个屏障,爱调换顺序搞事情的人就对应这几条不能重排序的指令。【我们这里讨论的是高并发多线程有“数据共享”的环境】

示例:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1377191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贝叶斯优化的基本流程

贝叶斯优化的基本流程 假设已知一个函数𝑓(𝑥)的表达式以及其自变量𝑥的定义域,现在,我们希望求解出𝑥的取值范围上𝑓(𝑥)的最小值,你打算如何求解这个最小值呢&#xf…

什么是云服务器CVM?

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

Linux NLTK 安装下载nltk_data

一、前提条件/环境 已经成功安装anaconda环境和nltk。anaconda环境和nltk可参考下面链接进行配置,nltk_data参考本文进行。 Linux安装Anaconda和配置nltk环境_cetons7安装nltk-CSDN博客 二、安装nltk_data 推荐离线安装,亲测成功! 1、nltk_…

OpenCV-Python(35):BRIEF算法

算法介绍 BRIEF(Binary Robust Independent Elementary Features)是一种用于计算机视觉中特征点描述子的算法。它是一种二进制描述子,通过比较图像上不同位置的像素值来生成特征点的描述子。 BRIEF算法的基本思想是选取一组固定的像素对&…

宏景EHR view接口sql注入漏洞

产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件. 漏洞概述 宏景eHR view接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃取…

为什么推荐大家使用动态住宅ip?怎么选择?

编辑代理ip的类型有很多,本文来介绍什么是动态住宅ip,为什么很多博主都推荐使用动态住宅ip,他到底有什么好处呢,接下来我们来学习一下。 一、什么是动态住宅ip 网络上的代理供应商很多,通常我们接触的比较多的几种类…

数据结构之二叉搜索树(Binary Search Tree)

数据结构可视化演示链接,也就是图片演示的网址 系列文章目录 数据结构之AVL Tree 数据结构之B树和B树 数据结构之Radix和Trie 文章目录 系列文章目录示例图定义二叉搜索树满足的条件应用场景 示例图 二叉 线形(顺序插入就变成了线性树,例如插入顺序为&…

构建基于RHEL7(CentOS7)的OpenSSH9.5p1的RPM包和升级回退方案

本文适用:RHEL7系列,或同类系统(CentOS7等) 文档形成时期:2023年 因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。 文章目录 环境准备安装依赖openssh-9.5p1-el7.spec内容构建RPM包下载安装前注意事项开启t…

AI系统ChatGPT网站系统源码AI绘画详细搭建部署教程,支持GPT语音对话+DALL-E3文生图+GPT-4多模态模型识图理解

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

Milvus Cloud与携程的向量探索大公开

【User Tech】2024 我们来啦! 今年,【User Tech】将更加专注于为社区用户提供技术功能解读、热点答疑,聚焦更丰富、更多样化的行业或使用场景的用户案例。我们期待通过分享更多关于 Milvus Cloud 的实战经验,为大家在 AI、大模型、…

JAVA开发的源码-供应商采购招标管理系统源码

SRM系统的主要功能包括: 私信获取源码 缩短采购周期时间:SRM数字化供应商管理系统提升企业之间的协作能力,将多个流程整合在一起,实现采购全流程线上化,在线审批流程的完整性,数字化供应商系统能够有效节约…

Java填充Execl模板并返回前端下载

功能:后端使用Java POI填充Execl模板,并返回前端下载 Execl模板如下: 1. Java后端 功能:填充模板EXECL,并返回前端 controller层 package org.huan.controller;import org.huan.dto.ExcelData; import org.huan.util.ExcelT…

GIT - 清除历史 Commit 瘦身仓库

目录 一.引言 二.仓库清理 ◆ 创建一个船新分支 ◆ 提交最新代码 ◆ 双指针替换分支 三.总结 一.引言 由于项目运行时间较长,分支较多,且分支内包含很多不同的大文件,随着时间的推移,历史 Git 库的容量日渐增发&#xff0c…

高级分布式系统-第6讲 分布式系统的容错性--故障/错误/失效/异常

分布式系统容错性的概念 分布式系统的容错性: 当发生故障时, 分布式系统应当在进行恢复的同时继续以可接受的方式进行操作, 并且可以从部分失效中自动恢复, 且不会严重影响整体性能。 具体包括以下4个方面的内容: 可…

nas系统盘制作(群晖)

目录 一、前言 二、制作系统盘 (一)下载镜像 (二)下载U盘刷写工具 三、资料获取 一、前言 群晖系统是使用比较多的nas系统。现在主要使用的是7版本的系统。 h群晖是指“h群晖NAS”(Hackintosh NAS)系统…

MindOpt:阿里巴巴达摩院打造的优化求解器及其组件全面介绍

MindOpt 简介和获取 MindOpt 是阿里巴巴达摩院决策智能实验室研发的决策优化软件。团队组建于2019年,聚焦于研发尖端运筹优化和机器学习技术,构建智能决策系统,更快更好地向各行各业提供数学建模与求解能力,帮助业务更快更好地做…

工作电压范围宽的国产音频限幅器D2761用于蓝牙音箱,输出噪声最大仅-90dBV

近年来随着相关技术的不断提升,音箱也逐渐从传统的音箱向智能音箱、无线音箱升级。同时在消费升级的背景下,智能音箱成为人们提升生活品质的方式之一。智能音箱是智能化和语音交互技术的产物,具有点歌、购物、控制智能家居设备等功能&#xf…

苹果可充电键盘背光系统专利曝光:延长MacBook Air / Pro续航

根据美国商标和专利局(USPTO)近日公示的清单,苹果公司近日获得了一项关于电子设备键盘的相关专利。 苹果公司在专利中表示,为了在低光环境下,能够提高用户敲击键盘的输入体验,通常键盘会提供背光。 传统键…

获取进行逗号分隔的id值 Split的使用

获取进行逗号分隔的id值,Split的使用 后台实现对有逗号进行分割的字符串 使用这行代码就不会有一个空数组值,直接过滤调数组中的空值 var ids = key.Split(,).Where(s => !string.IsNullOrEmpty(s