线程:volatile
-
-
- 介绍
- 实例测试
-
介绍
volatile保证线程间变量的可见性,简单地说就是当线程A对变量X进行了修改后,在线程A后面执行的其它线程能看到变量X的变动,更详细的说是要符合以下两个规则:
- 线程对变量进行修改之后,要立刻写回到主存
- 线程对变量读取的时候,要从主内存读,而不是缓存。
volatile不能保证原子性。
实例测试
code:
/*** volatile用于保证数据的同步,也就是可见性* @author dxt**/
public class VolatileTest {
private volatile static int num = 0;public static void main(String[] args){
new Thread(new Runnable(){
public void run(){
while(num == 0){
//不用写代码}}}).start();try {
Thread.sleep(1000); //等一秒} catch (InterruptedException e) {
e.printStackTrace();}//设置num = 1, 使线程停止循环,不加volatile,线程会持续执行,因为cpu没有时间//将num=1写回内存num = 1;}
}