public class Tst11 implements Runnable {
private int x;
private int y;
/**
* @param args
*/
public static void main(String[] args) {
Tst11 t = new Tst11();
new Thread(t).start();
new Thread(t).start();
}
public void run() {
for (;;) {
x++;
y++;
System.out.println("x=" + x + ",y=" + y);
}
}
}以上代碼的運行結果是?A 編譯不通過
B 輸出行類似 x=1,y=1 , 總是重復一次。
C 輸出行類似 x=1,y=1 , 遞增,每行不重復。
D 輸出行類似 x=38773,y=38984 , x和y的值不一定相等
答案:D
分析:本地考察對 多線程的概念理解。 Java 中的多線程,指的是對 Java 的同一對象的同一代碼段,有兩個線程在競逐執行。
代碼11行、12行,創建了兩個線程。
由於是兩個線程 搶占式、發式地執行,故每個線程在執行 run 中的代碼時,很可能中途中斷執行,讓出CPU給另一個線程。所以導致 x 和 y 的值不能同步增加。