使用下面定义的线程类,如果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);
}
}
答案 0 :(得分:3)
将字段声明为public
public volatile static int xxx = 1;
从任何代码:
aThread1.xxx = 2;
答案 1 :(得分:1)
使用AtomicInteger并将其作为对main的线程(即aThread1)的引用传递给它。您还需要处理InterruptedException properly。