Java Thread,从main更改线程中的值

时间:2011-02-08 04:01:46

标签: java multithreading

使用下面定义的线程类,如果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);
    }
 }

2 个答案:

答案 0 :(得分:3)

将字段声明为public

public volatile static int xxx = 1;

从任何代码:

aThread1.xxx = 2;

答案 1 :(得分:1)

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