-3
當我運行下面的代碼時,它返回的是後面的9號但我認爲它應該是10否,因爲start()將執行運行段,不,不是嗎?請幫忙解釋一下。謝謝!爲什麼這個程序涉及線程首先返回「是」
class myThread implements Runnable{
String mystring = "Yes ";
public void run() {
this.mystring = "No ";
}
public static void main (String args[]) {
myThread t = new myThread();
new Thread(t).start();
for (int i=0; i<10; i++){
System.out.println(t.mystring);
}
}
}
你開始線程,但你不知道它在什麼時候被執行。有時你會得到10分,其他時間可以得到2分是或更多。 – Gonzalo
這裏根本沒有線程安全性;你的結果將完全未定義。我相信,不能保證'不'會出現,因爲你的字符串引用不是'volatile'。 –