博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
long,double高低位,非线程安全
阅读量:2505 次
发布时间:2019-05-11

本文共 407 字,大约阅读时间需要 1 分钟。

Java虚拟机规范定义的许多规则中的一条:所有对基本类型的操作,除了某些对long类型和double类型的操作之外,都是原子级的。

  目前的JVM(java虚拟机)都是将32位作为原子操作,并非64位。当线程把主存中的 long/double类型的值读到线程内存中时,可能是两次32位值的写操作,显而易见,如果几个线程同时操作,那么就可能会出现高低2个32位值出错的情况发生。即long,double高低位,非线程安全。

即如有一个long类型的field字段,某个线程正在执行 field = 123L ,而同时有另一个线程正在执行 field = 456L,这样的指定操作之后field的值会是什么,是无法保证的。也许是123L,也可能是456L,或许是0L,甚至还可能是31415926L。

  要在线程间共享long与double字段是,必须在synchronized中操作,或是声明为volatile。

转载地址:http://qymgb.baihongyu.com/

你可能感兴趣的文章
X-Forwarded-For伪造及防御
查看>>
android系统平台显示驱动开发简要:LCD驱动调试篇『四』
查看>>
Android 高仿微信头像截取 打造不一样的自定义控件
查看>>
Jenkins的初级应用(1)-Publish Over SSH
查看>>
利用正则表达式群发定制邮件
查看>>
【原】RDD专题
查看>>
第三周——构建一个简单的Linux系统MenuOS
查看>>
Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
查看>>
Codeforces 257D
查看>>
常用的20个强大的 Sublime Text 插件
查看>>
ajaxfileupload.js在IE中的支持问题
查看>>
tensorflow学习之(十)使用卷积神经网络(CNN)分类手写数字0-9
查看>>
当document.write里含有script标签时
查看>>
工作中常见问题
查看>>
JAVA 从一个List里删除包含另一个List的数据
查看>>
外国的月亮比较圆吗?外籍团队工作有感
查看>>
CentOS 关闭烦人的屏保
查看>>
分布式系统事务一致性解决方案
查看>>
ShuffleNet总结
查看>>
前后台验证字符串长度
查看>>