我正在研究 Thread join() 方法,我遇到了 stackoverflow 上的ThreadJoinMethod帖子。我修改了代码以开发一个工作示例,但我对输出感到困惑。代码片段是。
class JoinRunnable implements Runnable{
public void run() {
for(int i =0 ; i < 4 ; i++){
System.out.println(i);
}
}
}
public class TestJoin{
public static void main(String[] args) throws InterruptedException {
JoinRunnable joinRunnable = new JoinRunnable();
Thread t1 = new Thread(joinRunnable);
Thread t2 = new Thread(joinRunnable);
t1.start();
t2.start();
System.out.println("Currently running thread: " + Thread.currentThread().getName());
t1.join();
t2.join();
System.out.println("I must wait");
}
}
以下程序的输出是:-
0
1
2
3
0
1
2
3
Currently running thread: main
I must wait
我对输出感到困惑。当前线程将在调用join
t1 和 t2 后加入,但为什么语句"Currently Running Thread: main"
在 t1 和 t2 完成后打印?我在这里错过了一些重要的概念吗?因为 main() 将在连接语句之后而不是之前连接 t1 和 t2。有人可以详细说明吗?