java中 long和double类型的赋值是原子性吗?

国内9大Coding Plan平台实测:CI/CD延迟与开发者体验横评 代码托管平台不仅是Git仓库,更是现代研发流程的‘生产力基建’核心。其底层能力涵盖Git协议优化、CI/CD调度实时性、制品库并发吞吐及RBAC权限收敛效率等关键维度。尤其在团队规模扩张、日均提交激增、多环境高频部署场景下,Webhook延迟、CI排队耗时、制品上传卡顿等应用层性能指标,远比网络层ping值更能决定开发效能。本文基于真实微服务项目(32模块、8.7万行/仓)与三类极端负载(长尾构建、热区冲突、制品洪峰),对国内9个满足Coding Plan标准的平台开展端到端压测,聚焦CI/CD延迟与开发者 阅读详情

以上问题,在百度中搜答案的时候,竟发现大家语调一致地认为: long和double类型的赋值不是原子性的。

but,其实不是这样的。

那你有想过吗,为什么同样是基本数据类型,byte ,int short它们的赋值就是原子性的呢?

讲到根本,原来啊,是和你的操作系统是有关的,32位操作系统每次读取最长的是4个字节,32bit,所以,在32位操作系统上,超过32bit的数据是需要分俩次读取的。

那么,在读取long,double类型数据时,有可能在读取第一次时,别的线程对其进行修改,所以才会出现非原子性的操作 。

在java中,除单纯的引用类型和非long,double的基本类型变量的赋值才是是原子性的。

实例可参考 32位JVM对long类型的赋值不是原子性操作

End!

在这里插入图片描述

【Claude Code】Extra inputs are not permitted 报错:代理网关剥离 Beta 标头的修复 通过代理或 LLM 网关连接 Anthropic API 时,Claude Code 报 "Extra inputs are not permitted"?根因是中间件删除了 anthropic-beta 请求标头,导致 Beta 字段被 API 拒绝。本文详解标头转发配置和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 回退方案。 阅读详情

相关推荐

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总 SRTM15(450米)免费下载 https://pan.baidu.com/s/1eO0U6wfzs7YSe2EQdxRJ2Q提取码:o7am GMTED(250米)免费下载 https://pan.baidu.com/share/init?surl=nrbbdbhyNVQV46XwqzqLlg 提取码:V7X9 SRTM3 (90米)免费下载 https://pan.baidu.com/share/..

TuxinyunGIS的博客 1万+

java保证多线程安全的一种机制 : 原子类介绍 atomic

volatile 保证了可见性和有序性 ,不保证原子性,并且没有对变量加锁 原子类 对volatile 做了封装,是一种 支持 原子性的 类库,并且没有对变量加锁。 他是如何保证原子性呢,他是通过cas 操作和while 循环 来做到的。 atomic原子类导图 1 原子更新基本类型 atomic包提高原子更新基本类型的工具类,主要有这些: AtomicBoolean:以原子...

xiaoliuliu2050的专栏 3447

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记-----GCN在交通领域的应用(二) 一、论文翻译: 1、摘要: 及时准确地交通预测对于城市交通控制和指导具有至关重要的意义。由于交通流量的非线性和复杂性,传统的方法不能满足中长期预测任务的需求,并且往往会忽略时空数据的时间和空间依赖特性。在这篇论文中,为了处理在交通领域的时间序列预测问题...

cy_believ的博客 1916

Java中long和double的原子性

Java中long和double的原子性 java中基本类型中,long和double的长度都是8个字节,32位(4字节)处理器对其读写操作无法一次完成,那么,JVM,long和double是原子性的吗? JVM中对long的操作是不是原子操作? 首先,通过一段程序对long的原子性进行判断。测试程序如下: public class LongAtomTest implements R...

weixin_30432179的博客 354

C# 基于NetStandard.Opc.Ua实现高效OPC UA数据订阅与同步读写

本文详细介绍了在C#中利用NetStandard.Opc.Ua库高效实现OPC UA数据订阅与同步读写的方法。通过实战代码演示了如何建立连接、配置订阅管理器、优化监控项分组,并对比了同步与异步读写的适用场景,帮助工业软件开发者构建稳定可靠的数据采集客户端,提升工业物联网应用开发效率。

weixin_29201859的博客 228

Paho Asynchronous MQTT C Client Library--MQTTAsync API

异步MQTT 客户端库for C

yoyo勰的博客 1264

java int short long float double 类型描述以及原子性说明

在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性,其他的都具有原子性。而使用AtomicLong能让long的操作保持原子型。因为代码里面做了封装。 “深入java虚拟机”中提到,int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,这样就会造成错误数据的

马万明的专栏 2217

QGroundControl高级配置与自定义功能实战指南

本文深入探讨了QGroundControl(QGC)的高级配置与自定义功能,为无人机开发者、系统集成商和高级用户提供实战指南。内容涵盖从品牌界面定制、自定义MAVLink消息处理,到插件开发与自动化部署的全流程,旨在帮助用户解锁QGC的隐藏潜力,打造专属的行业解决方案。

weixin_29234509的博客 239

Java的long和double类型的赋值操作为什么不是原子性的?

Java的long和double类型的赋值操作为什么不是原子性的?

Ives_WangShen的博客 1999

yolov26改进 | 检测头篇 | 利用渐近特征金字塔网络AFPN改进yolov26检测头融合P2网络结构(让小目标无所遁形,全网独家首发)

本文介绍一种基于AFPN渐近特征金字塔网络改进的YOLOv26四检测头Detect_FPN。AFPN通过逐级融合底层细节、中层结构与高层语义特征,缩小不同尺度特征之间的语义差距,减少直接融合带来的信息冲突,使检测头获得更稳定、更充分的多尺度表达。本文进一步增加高分辨率小目标检测分支,强化对微小目标、密集目标和复杂背景目标的感知能力,适合工业缺陷、遥感及无人机等场景。文中将展示基础模型与改进模型的训练对比结果,并提供完整代码、配置文件、模块注册方法及Codex修改思路,方便直接复现和二次创新。

Snu77的博客 371

QGIS安装与使用教程

QGIS安装与使用教程

weixin_46713695的博客 2万+

java原子类

什么是原子类 原子是最小粒度的,操作不可分割的。原子类作用 对多线程访问同一个变量,我们需要加锁,而锁是比较消耗性能的,JDk1.5之后, 新增的原子操作类提供了 一种用法简单、性能高效、线程安全地更新一个变量的方式, 这些类同样位于JUC包下的atomic包下,发展 到JDk1.8,该包下共有17个类, 囊括了原子更新基本类型、原子更新数组、原子更新属性、原子更新引用jdk1.8新增原子类 Do...

大佬请赐教 684

基于深度学习的鸟类检测识别系统:YOLOv5 + YOLOv8 + YOLOv10 + UI界面 + 数据集

YOLOv5是当前目标检测领域非常流行的模型,具有良好的检测精度和实时推理速度。其网络结构相比前几代YOLO模型进行了优化,尤其是在检测精度和计算效率上有了显著提高。YOLOv5特点高效性:能够在较低的硬件环境下进行实时检测。易于部署和使用:YOLOv5提供了简单的API接口,方便开发者快速集成和使用。优异的精度:在多个数据集上测试,表现出色。本文详细介绍了基于YOLOv5、YOLOv8和YOLOv10的鸟类检测识别系统的设计与实现。

YOLO 1114

java int赋值long_int/long变量的赋值,到底是不是原子操作吗?

对于int,long,double的赋值是否是原子操作,在网上也有很多争论。原子操作严禁的说是针对CPU是否一个指令可以完成。而JVM在操作系统上又封了一层自己的规范。JAVA规范是有一定的描述的,参考https://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.417.7.Non-atomic Treatment of...

weixin_39936388的博客 828

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java中long和double类型操作的非原子性探究

Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* 包中所有类的一切操作. 但是java对long和double的赋值操作是非原子操作!!long和double占用的字节数都是8,也就是64bits。 在32位操作系统上对64位的数据的读写要分两步完成,每一步取32位数据。这样对double和long的赋值操作就会有问题:如果有两个线程同时写一个变量内存,一个进程写低32位,而另一.

qq_45531729的博客 338

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java 对象引用赋值是否原子操作_关于java赋值操作的原子性问题

17.7.Non-Atomic Treatment of double and longFor the purposes of the Java programming language memory model, a single write to a non-volatile long or double value is treated as two separate writes: on...

weixin_31974757的博客 1285

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java基本类型赋值操作的原子性

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33712987的博客 793

Java数据类型操作的原子性

1.基本类型,引用类型的赋值,引用是原子的操作;2.long与double的赋值,引用是可以分割的,非原子操作;3.要在线程间共享long或double的字段时,必须在synchronized中操作,或是声明成volatile.

技术的学习与积累是个技术活 2758

Java中的Long和Double类型

Long型数据与Double型数据都是8位的,为什么Double的数值范围那么大呢?Long型数据范围是-2^63-(2^63-1),为什么Double类型的范围不是它,而是1.7e-308-1.7e+308呢?Java中的原子操作包括:1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切

u011277123的博客 1万+

java 原子性类型_Java 原子性,可见性

原子性:最小操作执行单元,不可中断分割。int类型是原子的,long不一定是,因为long的赋值是两次赋值才能完成,对于32位操作系统来说,单次操作能处理的最长长度为32bit,而long类型8字节64bit,所以对long的读写都要两条指令才能完成(即每次读写64bit中的32bit)。如果JVM要保证long和double读写的原子性,势必要做额外的处理。JVM规范中,没有规定一定要原子性,3...

weixin_28668743的博客 348

java 原子性int_JAVA原子性操作

java 原子性操作Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作2)所有引用reference的赋值操作3)java.concurrent.Atomic.* 包中所有类的一切操作count++不是原子操作,是3个原子操作组合1.读取主存中的count值,赋值给一个局部成员变量tmp 2.tmp+1 3.将tmp赋值给count要使用AtomicInteger.g...

weixin_39632693的博客 2170

Java中的原子操作

这个问题偶然是被我在网上看到的,当时吃了一惊,怎么赋值操作还有可能 不是原子操作? Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* 包中所有类的一切操作。 但是java对long和double的赋值操作是非原子操作!!long和double占用的字节数都是8,也就是64bits。在32位操作系统上对64位的数据的读写要分两步完成,每一步取32位数据。这样对...

zzwpublic的专栏 327

java并发特性,原子性、有序性、可见性

原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰。 Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* 包中所有类的一切操作。 但是java对long和double的赋值操作是非原子操作!!long和d...

longload 293

java中的原子操作

Java中的原子操作包括: 1)除long和double之外的基本类型的赋值操作 2)所有引用reference的赋值操作 3)java.concurrent.Atomic.* 包中所有类的一切操作。   但是java对long和double的赋值操作是非原子操作!!long和double占用的字节数都是8,也就是64bits。在32位操作系统上对64位的数据的读写要分两步完成,每一步取...

weijinqian0的博客 525

多线程 基本类型的原子性问题

在java的语言规格中,一开始就定义了一些原子的操作,如,char ,int 这些的赋值与引用是原子的, 例如,两个线程同时对int类型的字段n进行赋值,一个使n=123 ,一个线程使n=345. 那么最后n的值不是123就是345,而不用担心模式会混合在一起。 但long与double的指定,引用操作并不是不可分割的 如对于long类型的a 赋值 ,两个线程分别使其a = 1234L ,...

sammor 256
上一篇: Enumerator迭代器和Iterator迭代器区别
下一篇: 设计模式 之 单例模式 单例的7种写法
fedrefdrrhthg
博客等级 码龄9年 63粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值