這裏我創建了Main類,在它內部一個線程t1已經通過發送一個可運行的目標開始。但是由於線程已經啓動,我相信run()方法應該運行並調用一個.SetI(20)方法。但輸出結果爲0.可能somone請讓我知道這背後的邏輯。在一個線程中調用run方法
public class _216 {
private int i;
public synchronized void setI(int i){
this.i=i;
}
public synchronized int getI(){
return i;
}
}
class Main{
public static void main(String[] args) {
final _216 a=new _216();
Runnable r=new Runnable(){
@Override
public void run() {
a.setI(20);
}
};
Thread t1=new Thread(r);
t1.start();
System.out.println(a.getI());
}
}
Ahh oki我知道了,但有沒有可能得到輸出爲20? – user3789200 2014-10-08 03:17:31
當然,先調用't1.join()',但如果你想要順序執行,爲什麼你要使用一個線程? – EJP 2014-10-08 03:26:16