Java join()概念
在中查看我的代码。我对连接概念的理解是,如果我在主线程中创建了一个线程“t2”。我写的像t2.join()。首先,t对象的run方法下的所有内容都将被执行,然后主线程的执行将被重新启动。但如果我在主线程“t2”之前再创建一个线程“t1”。此时,应首先执行“t2”,然后执行“t1”。对的但如果你看到我的链接代码。t1和t2同时运行。为什么会这样 根据您共享的链接Java join()概念,java,multithreading,Java,Multithreading,在中查看我的代码。我对连接概念的理解是,如果我在主线程中创建了一个线程“t2”。我写的像t2.join()。首先,t对象的run方法下的所有内容都将被执行,然后主线程的执行将被重新启动。但如果我在主线程“t2”之前再创建一个线程“t1”。此时,应首先执行“t2”,然后执行“t1”。对的但如果你看到我的链接代码。t1和t2同时运行。为什么会这样 根据您共享的链接 e1.start(); e2.start(); try { e2.join(); } c
e1.start();
e2.start();
try {
e2.join();
} catch (InterruptedException e) {
e.printStackTrace();
这里我们有3个线程正在运行
现在,当您编写
e2.join()
时,让我们尝试回答哪个线程将执行此语句?它是主线程
(此语句不是从任何线程的run()
方法调用的,它直接在主线程的执行下),因此,它是主线程
等待线程e2
完成。线程e1
已启动,因此运行时不会受到影响 在您的程序中,主线程告诉线程调度程序通过调用e1.start()来启动e1。现在,主线程e1正在进行中,类似地,当调用e2.start()时,调度程序在执行的绝望路径中启动e1,就像e1和主线程继续一样。但是当主线程执行e2.join()时,JVM会导致主线程等待,直到线程e2完成其任务主线程不会执行剩余的代码,它不会要求线程调度程序启动e3、e4和e5。
感谢快乐学习。不要链接代码。在问题中包括相关部分。尚未查看代码,但如果启动两个线程(然后并行运行,这就是线程的要点),然后使用
join()
等待线程2完成,那么当线程2结束时,无论线程1在做什么,主线程都将继续。线程1可以在线程2之前或之后结束,没关系。@ketan我已经发布了我的答案,希望对您有所帮助