Java线程,从主线程更改线程中的值
使用下面定义的thread类,如果main通过以下方式调用线程: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 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。只是在玩一些代码。