Java 从 Thread 更改主布尔值

Java change main boolean from Thread

如何从线程内部更改我在 Main class 中定义的布尔值?使用 booleanName = true; 似乎不起作用。 有没有办法改变变量的值?

按照其他人的建议,您应该 post 您的示例代码。如果您问是否可以从线程的 运行() 方法内部更改变量的状态,是的,当然可以。

public class MyThread implements Runnable {

    private boolean b = true;

    public void run() {
        b = false;
        System.out.println(b);
    }

    public boolean getBoolean() {
        return b;
    }

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(new MyThread());
        t.start();
    }
}

更改值就是这样。 booleanName = false 如果 booleanName 可以从您的线程代码访问,或者类似 Main.setBooleanName(false) 如果不是。

如果您想从另一个线程读取该布尔值,您还必须确保新值对您的另一个线程可见。这可以通过使 booleanName volatile,使用线程安全的布尔类型(如 AtomicBoolean 或 entering/leaving 一个 synchronized 方法或块来完成,然后再从 booleanName.