基本类型变量的赋值和读取是原子操作

u011165933 2017-06-09 10:10:02
Java中基本数据类型的赋值和读取为什么是原子的,以赋值为例,比如
x = 10; //x为int型

那么某个线程执行该语句是下面两种过程的哪一种:
1、把10直接写到工作内存中的变量x中?
2、将该线程工作内存中的x赋值为10,然后写入到主内存中?
如果是第一种,那么就很好理解了是原子操作;
如果是第二种,为什么是原子操作?
...全文
753 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
火灵 2018-05-22
  • 打赏
  • 举报
回复
引用 2 楼 HinanaiTenshi 的回复:
int类型申明并复制会做两步操作,iconst或者bipush压常量入栈,istore顶栈写局部变量。 原子操作和你关注的点没关系,jvm保证能一起执行的操作就是原子的,和动作的多少以及复杂度无关。
JVM是如何保证能一起执行的? 原理是?
HinanaiTenshi 2017-06-09
  • 打赏
  • 举报
回复
int类型申明并复制会做两步操作,iconst或者bipush压常量入栈,istore顶栈写局部变量。 原子操作和你关注的点没关系,jvm保证能一起执行的操作就是原子的,和动作的多少以及复杂度无关。
fhqgrrk 2017-06-09
  • 打赏
  • 举报
回复
你说的两种过程都不是。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧