如何将 volatile 变量传递给另一个 class?
How to pass volatile variable to another class?
将 volatile 变量传递给另一个 class(均扩展 Thread Class)时,我是否必须将此 volatile 变量导入为 volatile 或仅 public 定义就足够了?
例如:
public class A extends Thread{
public volatile int a = 0;
public void run(){
B bObj = new B(a);
a++;
}
}
现在 class 接收一个 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 ;
}
}
两个 classes 在一段时间内交换变量。
非常感谢任何帮助。谢谢
Java 是按值传递。在 B
构造函数中,您没有在 bObj
中存储对 A
对象的 a
字段的引用;你只是在存储价值。 (换句话说,B
不是 "receiving a volatile variable";它接收的 值 恰好存储在 volatile
字段中。)值A
对象和 B
对象中的 a
字段可以独立更改值。
使用您发布的代码,无需将 A.a
声明为 volatile
。
将 volatile 变量传递给另一个 class(均扩展 Thread Class)时,我是否必须将此 volatile 变量导入为 volatile 或仅 public 定义就足够了?
例如:
public class A extends Thread{
public volatile int a = 0;
public void run(){
B bObj = new B(a);
a++;
}
}
现在 class 接收一个 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 ;
}
}
两个 classes 在一段时间内交换变量。
非常感谢任何帮助。谢谢
Java 是按值传递。在 B
构造函数中,您没有在 bObj
中存储对 A
对象的 a
字段的引用;你只是在存储价值。 (换句话说,B
不是 "receiving a volatile variable";它接收的 值 恰好存储在 volatile
字段中。)值A
对象和 B
对象中的 a
字段可以独立更改值。
使用您发布的代码,无需将 A.a
声明为 volatile
。