如何将 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