0
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