首页 > 其他分享 >八种原子操作

八种原子操作

时间:2023-03-29 20:11:30浏览次数:26  
标签:变量 read 八种 原子 工作 于主 内存 操作 作用

为了支持 JMM,Java 定义了 8 种原子操作(Action),用来控制主存与工作内存之间的交互:

  1. read 读取:作用于主内存,将共享变量从主内存传动到线程的工作内存中,供后面的 load 动作使用。
  2. load 载入:作用于工作内存,把 read 读取的值放到工作内存中的副本变量中。
  3. store 存储:作用于工作内存,把工作内存中的变量传送到主内存中,为随后的 write 操作使用。
  4. write 写入:作用于主内存,把 store 传送值写到主内存的变量中。
  5. use 使用:作用于工作内存,把工作内存的值传递给执行引擎,当虚拟机遇到一个需要使用这个变量的指令,就会执行这个动作。
  6. assign 赋值:作用于工作内存,把执行引擎获取到的值赋值给工作内存中的变量,当虚拟机栈遇到给变量赋值的指令,执行该操作。比如 int i = 1
  7. lock(锁定) 作用于主内存,把变量标记为线程独占状态。
  8. unlock(解锁) 作用于主内存,它将释放独占状态。
如上图所示,把一个变量数据从主内存复制到工作内存,要顺序执行 read 和 load;而把变量数据从工作内存同步回主内存,就要顺序执行 store 和 write 操作。 由于重排序、原子性、内存可见性,带来的不一致问题,JMM 通过 八个原子动作,内存屏障保证了并发语义关键字的代码能够实现对应的安全并发访问。

标签:变量,read,八种,原子,工作,于主,内存,操作,作用
From: https://www.cnblogs.com/zhengbiyu/p/17270166.html

相关文章

  • 九、文件操作
    读/写文件时计算机中最常见的I/O操作。python有内置函数open()负责文件的读写。 计算机对文件的读/写操作步骤:打开文件—读(写)文件—关闭文件。 1.相对路径和绝对路径......
  • Linux操作命令常见问题(N+)
    1.什么是Linux?它的特点是什么?答:Linux是一种开源的操作系统,其特点包括稳定性、安全性、灵活性、可扩展性、自由度高等。2.如何在Linux系统上安装软件?答:通常可以使用包......
  • Flask框架 之Flask-SQLAlchemy操作数据库
    一、代码fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemyfromsqlalchemyimportdescclassConfig(object):'''sqlalchemy参数配置'''......
  • 零售数据分析之操作篇10:销售排名与TOP分析
    各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维+数据分析,通过数据讲故事。上期回顾与作业解答上一讲讲了如何通过历史聚合与其他聚合一起使用的场景,包括历史聚合+唯......
  • 操作系统01.3.29
    操作系统概述操作系统的基本概念操作系统(OperationSystem),简称OS,是管理硬件和软件资源的计算机程序。操作系统有很多,比如Windows、Linux、macOS、Unix、andriod、i......
  • 新IE与Xbox合体 将融合声控和体感操作
    IE浏览器以前给人的印象是缓慢、丑陋且间歇性抽风,体验如此之差却垄断了全球浏览器市场十几年,微软如今的形象也受其影响。另一方面,Xbox却成为了微软的拳头产品之一,不但击败......
  • 云服务Skytap三大重要更新 让虚拟机测试与操作更简单
    云服务提供商Skytap今日宣布服务进行了三大重要更新,让虚拟机测试与操作变得更简单,包括更简单的远程访问,个性化的使用报告,应对流量问题的应急方案。下面是更新功能详细介绍:远......
  • python - pdf简单操作
    1.安装PyPDF2pip3installPyPDF22.分割fromPyPDF2importPdfReader,PdfWriterfile=input()pdf_reader=PdfReader(file)foriinrange(len(pdf_reader.pa......
  • linux操作--4
    进程管理ps(查看系统目前有那些程序正在运行)kill或killall(用来中止进程)-9(表示强迫进程立即停止)pstree-p(显示进程树并带上进程号)服务管理chkconfig(通过这个命令可......
  • RabbitMQ 操作命令记录
    #RabbitMQ操作命令记录rabbitmqctladd_user<用户名><密码>#添加用户,去掉尖括号填写对应内容rabbitmqctlset_permissions-p/<用户名>".*"".*"".*"#添加......