Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java线程,从主线程更改线程中的值_Java_Multithreading - Fatal编程技术网

Java线程,从主线程更改线程中的值

Java线程,从主线程更改线程中的值,java,multithreading,Java,Multithreading,使用下面定义的thread类,如果main通过以下方式调用线程: Thread foo = new aThread1(); foo.start(); 是否可以从调用类更改xxx的值?在主类的线程中更改变量很简单,但我似乎不能走另一条路 class aThread1 extends Thread { volatile static int xxx = 1; public void run() { try { sleep(10000);

使用下面定义的thread类,如果main通过以下方式调用线程:

     Thread foo = new aThread1();
     foo.start();
是否可以从调用类更改xxx的值?在主类的线程中更改变量很简单,但我似乎不能走另一条路

class aThread1 extends Thread {
volatile static int xxx = 1;
public void run() {
        try {
            sleep(10000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Current value: " + xxx);
    }
 }

将字段声明为
public

public volatile static int xxx = 1;
从任何代码:

aThread1.xxx = 2;

使用它并将其作为main中线程(即aThread1)的引用传递。您还需要处理InterruptedException。

从哪里更改变量?但是foo是线程的引用,不是吗?例如,如果从该类创建了两个线程(现在我们有了foo和bar,它们都从aThread1创建新线程),该示例将如何工作。@列表将字段更改为非静态,然后您可以调用
((aThread1)foo).xxx=2或者更好,只需将foo声明为
aThread foo=new aThread()谢谢。正是我想要的。这里有点像java n00b。只是在玩一些代码。