Pup*_*lam 0 java multithreading
我有以下示例代码.变量alpha在线程内定义.如何在线程外获取该变量的变量?
...
new Thread() {
public void run() {
...
String alpha = "new value";
...
...
}
}.start();
...
System.out.println(alpha); // <- how to make this work?
Run Code Online (Sandbox Code Playgroud)
您可以将结果存储在字段中.您的问题不清楚代码是否采用非静态或静态方法,因此我使用static方法编写了一个示例并相应地创建了该字段static.如果它是一个实例方法,则该字段不应该是static.必须volatile这样才能在主线程中看到更改.
public class Main {
private static volatile String alpha = null;
public static void main(String[] args) {
new Thread() {
@Override
public void run() {
alpha = "new value";
}
}.start();
while (alpha == null); // We wait until the variable is non-null.
System.out.println(alpha);
}
}
Run Code Online (Sandbox Code Playgroud)