java是什么 volatile能使得一个非原子操作变成原子操作吗?
浏览量:2900
时间:2021-04-06 11:19:33
作者:admin
volatile能使得一个非原子操作变成原子操作吗?
JAVA内存模型是为了解决多线程环境下共享变量的一致性问题。一致性主要包括三个特征:原子性、可见性和有序性。原子性
一个程序在开始时不会被其他线程中断。它可以是一个操作或多个操作。操作原子性由synchronized和lock关键字保证;
2。Visible
当一个线程更改共享变量的值时,其他线程可以立即感知到该更改;volatile variable可以确保变量在多线程环境中的可见性,但不能保证原子操作;
除了volatile之外,还有两个关键字也可以保证可见性,所以看到synchronized可以保证Java程序中的原子操作,如果在这个线程中观察到,所有操作都是有序的;如果在另一个线程中观察到,所有操作都是无序的。前半句是指线程中序列化的语义,后半句是指主存和工作内存之间的指令重排序和同步延迟问题;
Java提供了两个关键字:volatile和synchronized来保证顺序。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。