Javaスレッドを使用したこのコードがあります:
public class ThreadExample implements Runnable{
public Thread thread;
static int i = 0;
ThreadExample(){
thread = new Thread(this);
thread.start();
}
public static void main(String[] args) {
ThreadExample example = new ThreadExample();
for(int n =0; n<1000; n++){
System.out.println("main thread "+i);
i++;
}
}
public void run(){
for(int index=0; index<1000; index++){
System.out.println("Sub thread "+i);
i++;
}
}
}
実行すると、結果は次のようになります。
main thread 0
Sub thread 0
Sub thread 2
Sub thread 3
Sub thread 4
Sub thread 5
Sub thread 6
Sub thread 7
Sub thread 8
Sub thread 9
Sub thread 10
Sub thread 11
Sub thread 12
main thread 1
....
実行されるスレッドがその順序に従わないことを知っています。しかし、私が理解していないのは、変数 i が 12 になったときにメインスレッドが 1 (変数 i を出力する) を出力するのはなぜですか? (サブスレッドが 12 に出力されたため)。
ありがとう :)