java内存模型

Java内存模型定义了变量的访问规则,包括lock、unlock、read、load、use、assign、store和write等操作,确保线程安全的原子性、可见性和有序性。synchronized和volatile关键字是实现这些特性的关键,它们提供了线程间的同步和可见性保证。内存模型分为程序计数器、虚拟机栈、本地方法栈、Java堆和运行时常量池等区域,每个区域都有特定的用途和异常处理规则。
摘要由CSDN通过智能技术生成

什么叫做内存模型

Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节。此处的变量与 Java 编程时所说的变量不一样,只包括了实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,后者是线程私有的,不会被共享。

操作和规则

lock(锁定)

作用于主内存的变量,把一个变量标识为一条线程独占状态。

unlock(解锁)

作用于主内存变量,把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。

read(读取)

作用于主内存变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的 load 动作使用

load(载入)

作用于工作内存的变量,把 read 操作从主内存中得到的变量值放入工作内存的变量副本中。

use(使用)

作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎,每当虚拟机遇到一个需要使用变量的值的字节码指令时将会执行这个操作。

assign(赋值)

作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。

store(存储)

作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存中,以便随后的 write 的操作。

write(写入)

作用于主内存的变量,它把 store 操作从工作内存中一个变量的值传送到主内存的变量中。

如果要把一个变量从主内存中复制到工作内存,就需要按顺序地执行 read 和 load 操作,如果把变量从工作内存同步回主内存中,就要按顺序地执行 store 和 write 操作。Java 内存模型只要求上述操作必须按顺序执行,而没有保证必须是连续执行。

规则

1 )不允许 read 和 load、store 和write 操作之一单独出现

2 )不允许一个线程丢弃它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值