誰でも次の問題を解決するのを手伝ってもらえますか?
public class Starter extends Thread{
private int x=2;
public static void main(String[] args) throws Exception{
new Starter().makeItSo();
}
public Starter(){
x=5;
start();
}
public void makeItSo() throws Exception {
join();
x=x-1;
System.out.println(x);
}
public void run(){x*=2;}
}
A.4
B.5
C.8
D.9
E. コンパイルの失敗
F. 実行時に例外がスローされる
G.確実に判断することは不可能です
ダンプでは、答えは D です。new Starter().makeItSo で新しいスレッドが作成されることはわかっています。しかし、run() の x*=2 がメソッド makeItSo の x=x-1 と System.out.println(x) の間で実行される理由を誰か教えてもらえますか?