如何在Thread中更改我在Main类中定义的布尔值?它似乎无法使用booleanName = true;
。
有没有办法改变变量的值?
答案 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
方法或块来完成}。