Java从线程更改主布尔值

Java从线程更改主布尔值,java,multithreading,variables,boolean,Java,Multithreading,Variables,Boolean,如何从线程内部更改在主类中定义的布尔值?使用booleanName=true;似乎不起作用;。 有没有办法更改变量的值?正如其他人所建议的,您应该发布示例代码。如果您询问是否可以从线程的run方法内部更改变量的状态,是的,当然可以 public class MyThread implements Runnable { private boolean b = true; public void run() { b = false; System.

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

正如其他人所建议的,您应该发布示例代码。如果您询问是否可以从线程的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();
    }
}

更改值就是这样工作的。如果可以从线程代码访问booleanName,则booleanName=false;如果不能访问,则类似Main.setBooleanNamefalse


如果要从另一个线程读取该布尔值,还必须确保新值对另一个线程可见。这可以通过使用线程安全的布尔类型(如AtomicBoolean)使booleanName易变来实现,或者在读取booleanName之前输入/离开同步方法或块。

请发布您的codethread=new thread{public void run{};thread.start;我想改变一个布尔值,这个布尔值是在这个线程的主类中定义的。请发布你所有的代码,包括你的主类。所有的代码都很长,但是,难道没有一种方法可以仅仅从线程内部更改变量的值吗?将变量标记为volatile我这里有以下代码:我想在连接成功时将try块内部的布尔值设置为true,如果连接不成功,则在catch块内部将其设置为false。在这种情况下我应该怎么做?布尔值是在main类中定义的,该类在一个void中包含该线程。但是,从示例代码中还不清楚您所面临的问题。请把它展开。新的ChatClientlocalhost,8000.run;:你想做什么?听到了吗?正在启动另一个线程?我正在尝试在此线程内启动一个新的Netty客户端,如果连接成功,我想将布尔值设置为true,如果连接失败,则设置为false