如何获取线程内分配的变量值?

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)

Pau*_*ton 5

您可以将结果存储在字段中.您的问题不清楚代码是否采用非静态或静态方法,因此我使用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)