Java并发编程之顺序一致性

news2024/9/22 17:27:45

如果程序是正确同步的,程序的执行将具有顺序一致性(Sequentially Consistent)——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。

同步,即排队。

同一时刻,只能有一个线程和内存交互!!

顺序一致性内存模型两大特性

  1. 一个线程中的所有操作必须按照程序的顺序来执行。

  2. (不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序一致性内存模型中,每个操作都必须原子执行且立刻对所有线程可见。

下面这个栗子说明,不管多个线程间的操作如何交叉,单线程内的执行顺序是不变的。

 

同步程序的顺序一致性效果

当writer()方法让出CPU,但是其内部操作没有执行完,意味着还没有释放锁;此时,即便reader()方法得到了CPU的位置,但还是无法使用,因为锁未被释放。

未同步程序的顺序一致性效果

线程执行时读取到的值,要么是之前某个线程写入的值,要么是默认值(0,Null,False),JMM保证线程读操作读取到的值不会无中生有(Out Of Thin Air)的冒出来。

JMM不保证对64位的long型和double型变量的写操作具有原子性,而顺序一致性模型保证对所有的内存读/写操作都具有原子性。

原因是:超过总线宽度的,对内存的操作就要分两次,可能保证不了原子性。

数据通过总线在处理器和内存之间传递。每次处理器和内存之间的数据传递都是通过一系列步骤来完成的,这一系列步骤称之为总线事务(Bus Transaction)。 总线事务包括读事务(Read Transaction)和写事务(Write Transaction)。读事务从内存传送数据到处理器,写事务从处理器传送数据到内存,每个事务会读/写内存中一个或多个物理上连续的字。

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

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

相关文章

基于C#的窗体阴影效果方案 - 开源研究系列文章

最近在研究C#的Winform窗体的效果,上次介绍了窗体动画效果的博文( 基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 ),这次将窗体阴影效果的方案进行一个介绍。 找了一下度娘,具体窗体阴影效果就两种方法:直接绘制和…

机器学习深度学习——池化层

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——卷积的多输入多输出通道 📚订阅专栏:机器学习&&深度学习 希望文章对你们…

powershell 自动补全

我在zsh中使用智能提示 zsh-autosuggestions已经习惯了,而在windows中的终端默认没有智能提示,很起来不舒服。那么有没有什么替代呢? 安装powershell-7.3 我的windows 10默认安装的是powershell-5.1.19,所以我们先来升级一下。 …

基于facenet+faiss开发构建人脸识别系统

facenet是一款非常经典的神经网络模型,它可以直接学习从人脸图像到欧几里德空间的映射(直接将人脸映射到欧几里得空间)。在欧几里德空间中,距离直接对应于人脸相似性的度量。一旦这个空间产生,使用标准技术,将FaceNet嵌入作为特征…

p元素使用伪元素::before实现小圆点,换行缩进

p元素使用伪元素实现小圆点,默认换行第二行会与小圆点平行,图2是想要的样式 小圆点代码 p::before{content: "";display: inline-block;width: 6px;height: 6px;border-radius: 50%;background-color: #D8D8D8;margin: 0 5px 2px 0; }换行缩…

如何使用动态代理ip来突破限制

在如今数字化时代,互联网已经成为人们获取信息、交流互动、进行商业活动的重要平台。然而,许多网站为了保护安全和用户体验,采取了各种访问限制和封禁措施,使得用户在大规模网站访问和数据采集中面临种种困惑。作为动态IP代理产品…

数据可视化:Matplotlib详解及实战

1 Matplotlib介绍 Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表。 Matplotlib提供了一个套面向绘图对象编程的API接口,能够很轻松地实现各种图像的绘制,并且它可以配合Python GUI工具(…

汽车维修保养记录查询API:实现车辆健康状况一手掌握

在当今的数字化世界中,汽车维修保养记录的查询和管理变得前所未有地简单和便捷。通过API,我们可以轻松地获取车辆的维修和保养记录,从而实现对手中车辆健康状况的实时掌握。 API(应用程序接口)是进行数据交换和通信的标…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型(基于迁移学习) 3.1选择网络,这里用resnet 3.2如果用GPU训练,需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…

基于 Flink Paimon 实现 Streaming Warehouse 数据一致性管理

摘要:本文整理自字节跳动基础架构工程师李明,在 Apache Paimon Meetup 的分享。本篇内容主要分为四个部分: 背景 方案设计 当前进展 未来规划 点击查看原文视频 & 演讲PPT 一、背景 ​ 早期的数仓生产体系主要以离线数仓为主&#xf…

【Leetcode】二叉树的最近公共祖先,二叉搜索树转换成排好序的双向链表,前序遍历与中序遍历构造二叉树

一.二叉树的最近公共祖先 链接 二叉树的最近公共祖先 题目再现 『Ⅰ』思路一:转换成相交链表问题 观察上图,节点1和节点4的最近公共祖先是3,这是不是很像相交链表的问题,关于相交链表,曾经我在另一篇文章里写到过&a…

WPS Office AI实战:智能表单,信息收集神器

前面我们已经介绍了WPS里常用的文字、表格、演示文稿等等,在WPS AI的武装下重新发挥出智能化的威力,今天来聊聊表单的智能化应用会是什么样。 金山智能表单进行数据轻松收集,通过对话或拍照创建表单,回收结果还能自动生成数据报告…

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SO-CNN-BiGRU蛇群算法…

浅谈管廊智能监控和报警系统设计探究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:综合地下管廊为我国城市的发展发挥了积极的推动作用,为了确保综合地下管廊基本功能得以真正的发挥出来,有必要将智能监控系统融入综合地下管廊智能管理系统构建中,以便于实…

windows物理机 上安装centos ,ubuntu,等多个操作系统的要点

一、摘要 一般情况下,我们的笔记本或工作电脑都默认安装windows 分几个区,当下是win7 win8 win 10 win11 等,突然我们有需求需要安装个centos ,后面我们应当怎么做,要点是什么?一定要根据网上的贴子一步步来…

【雕爷学编程】MicroPython动手做(37)——驱动LCD与图文显示3

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片:K210(64位双核带硬件FPU和卷积加速器的 RISC-V CPU) 显示屏:LCD_2.8寸 320*240分辨率,支持电阻触摸 摄像头:OV2640,200W像素 扬声器&#…

python绘制六边形风车,用python画简单的风车

本篇文章给大家谈谈用python画简单的风车,以及python绘制六边形风车,希望对各位有所帮助,不要忘了收藏本站喔。 风车的动画,过程如下:1)绘制风车形状A,2)擦除风车形状A,3…

【LinearAlgebra】Chapter 12 - Linear Algebra in Probability Statistics

文章目录 Chapter 12 - Linear Algebra in Probability & StatisticsVariance (around athe mean) 方差(接近均值)Continuous Probability Distributions 连续概率分布Mean and Variance of p ( x ) p(x) p(x) p ( x ) p(x) p(x) 的均值和方差Norm…

idea-常用插件汇总

idea-常用插件汇总 码云插件 这个插件是码云提供的ps-码云是国内的一款类似github的代码托管工具。 Lombok Lombok是一个通用Java类库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或setter等方法…

[MYSQL]查询单位时间消耗量

请求哪位大神给我优化一下mysql语句. 数据库表:(日/月/年 数据表和data_hour结构一样,懒得复制了,不然太长) DROP TABLE IF EXISTS data_source;#数据源 create table IF not EXISTS data_source ( num int unsigned not null auto_increment PRIMARY KEY COMMENT序号 …