Java从Thread更改主布尔值

时间:2015-02-08 09:51:29

标签: java multithreading variables boolean

如何在Thread中更改我在Main类中定义的布尔值?它似乎无法使用booleanName = true;。 有没有办法改变变量的值?

2 个答案:

答案 0 :(得分:0)

根据其他人的建议,您应该发布示例代码。如果你问是否可以从线程的run()方法内部更改变量的状态,是的,当然可以。

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();
    }
}

答案 1 :(得分:0)

更改值就像那样。 booleanName = false如果可以从您的线程代码中找到booleanName,或者Main.setBooleanName(false),如果不可以。{/ p>

如果要从另一个线程读取该布尔值,还必须确保新值对其他线程可见。这可以通过使用booleanName volatile,使用类似AtomicBoolean的线程安全布尔类型或在从{{1}读取之前进入/离开synchronized方法或块来完成}。