我是 volatile 变量的新手,但我正在阅读文章,其中指出 2) 在某些情况下,Volatile 变量可以用作在 Java 中实现同步的另一种方法,比如 Visibility。使用 volatile 变量,它保证一旦写入操作完成,所有读取器线程都会看到 volatile 变量的更新值,如果没有 volatile 关键字,不同的读取器线程可能会看到不同的值。
我请求你们能不能给我展示一个小的java程序,所以从技术上讲,我也很清楚。
我的理解是......易失性意味着每个线程访问变量都将有自己的私有副本,与原始副本相同。但是如果线程要更改该私有副本,那么原始副本将不会得到反映。
public class Test1 {
volatile int i=0,j=0;
public void add1()
{
i++;
j++;
}
public void printing(){
System.out.println("i=="+i+ "j=="+j);
}
public static void main(String[] args) {
Test1 t1=new Test1();
Test1 t2=new Test1();
t1.add1();//for t1 ,i=1,j=1
t2.printing();//for t2 value of i and j is still,i=0,j=0
t1.printing();//prints the value of i and j for t1,i.e i=1,j=1
t2.add1();////for t2 value of i and j is changed to i=1;j=1
t2.printing();//prints the value of i and j for t2i=1;j=1
}
}
I request you guys could you please show a small program of volatile functionality, so technically also it is clear to me