2011-02-08 129 views
2

與線程類線程變化值定義如下所述,如果主調用線程通過:Java線程,從主

 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

從哪裏你想改變變量? – 2011-02-08 04:04:53

回答

3

聲明字段作爲public

public volatile static int xxx = 1; 

,並從任何代碼:

aThread1.xxx = 2; 
+0

但foo是線程的引用,不是嗎?例如,如果兩個線程是從該類創建的(現在我們有foo和bar都從一個線程創建新線程),該示例如何工作。 – 2011-02-08 04:07:25

1

使用AtomicInteger並把它傳遞,以從主線程(即aThread1)的引用。您還需要處理InterruptedException properly