【发布时间】:2012-04-01 01:38:48
【问题描述】:
我需要一些关于 Java 线程的 Volatile Keyword 的示例。
根据 volatile 关键字的定义,当变量声明为 volatile 时,线程将直接读取/写入变量内存,而不是从本地线程缓存读取/写入。
如果我错了,请纠正我。
因此,当我运行以下程序时,
public class ThreadRunnableBoth implements Runnable{
private volatile int num =0;
public void run(){
Thread t = Thread.currentThread();
String name = t.getName();
for(int i=0; i<100; i++){
if(name.equals("Thread1")){
num=10;
System.out.println("value of num 1 is :"+num);
}else{
num=15;
System.out.println("value of num 2 is :"+num);
}
}
}
public static void main(String args[]) throws InterruptedException{
Runnable r = new ThreadRunnableBoth();
Thread t1 = new Thread(r);
t1.setName("Thread1");
Thread t2 = new Thread(r);
t2.setName("Thread2");
t1.start();
t2.start();
}
}
我从某个站点获得了这些示例,当我尝试运行它时,我看不出删除 Volatile 或添加 Volatile 关键字有什么区别。
请解释一下删除和添加的区别。
非常感谢。
【问题讨论】:
标签: java multithreading