在将volatile变量传递给另一个类(都扩展Thread类)时,我是否必须将此volatile变量导入为volatile或公共定义就足够了?
例如:
public class A extends Thread{
public volatile int a = 0;
public void run(){
B bObj = new B(a);
a++;
}
}
现在接收volatile变量的类应该使用接收器变量定义为volatile还是public?像这样
public class B extends Thread{
public volatile int a;
public B(int a){
this.a =a ;
}
}
OR应该这样定义吗?
public class B extends Thread{
public int a;
public B(int a){
this.a =a ;
}
}
两个班级在一段时间内交换变量或另一个班级。
非常感谢任何帮助。感谢
答案 0 :(得分:0)
Java是按值传递的。在B
构造函数中,您没有在A
中存储对a
对象的bObj
字段的引用;你只是存储价值。 (换句话说,B
不是"接收易变变量&#34 ;;它正在接收恰好存储在volatile
字段中的值。 )a
对象和A
对象中B
字段的值可以单独更改值。
根据您发布的代码,无需将A.a
声明为volatile
。