public class ThreadTest extends Thread {
public static void main(String[] args) {
new ThreadTest().start();
for (int i = 0; i < 10; i++) {
System.out.format("%s %d\n", Thread.currentThread(), i);
}
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.format("%s %d\n", Thread.currentThread(), i);
}
}
}
を作成しているものの出力は次のようになります。スレッドは自分自身とメインスレッドで実行シーケンス
Thread[Thread-0,5,main] 0
Thread[main,5,main] 0
Thread[main,5,main] 1
Thread[main,5,main] 2
Thread[main,5,main] 3
Thread[main,5,main] 4
Thread[main,5,main] 5
Thread[main,5,main] 6
Thread[main,5,main] 7
Thread[main,5,main] 8
Thread[main,5,main] 9
Thread[Thread-0,5,main] 1
Thread[Thread-0,5,main] 2
Thread[Thread-0,5,main] 3
Thread[Thread-0,5,main] 4
Thread[Thread-0,5,main] 5
Thread[Thread-0,5,main] 6
Thread[Thread-0,5,main] 7
Thread[Thread-0,5,main] 8
Thread[Thread-0,5,main] 9
私は、スレッドが実行する順序について混乱しています。新しいThreadTest.startが実行されると、まずrun()メソッドが実行されます。しかし、なぜそれが0を出力し、メインスレッドを実行し続けた、あなたは私のために出力を説明することができますか?
ありがとうございます。
スレッドスケジューラによってスレッド順序が決定されました。プログラマーではない。 –
はどちらも並列に実行され、両方のループに 'Thread.sleep(1000);'を追加して結果を確認しようとします。 – Kaushal28