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
.
如何从线程内部更改我在 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
.