java 线程join()

2025年03月01日 11:09
有2个网友回答
网友(1):

join();//当前线程邀请调用方法的线程优先执行 在调用方法的线程执行
//结束之前 当前线程不能再次执行

网友(2):

线程是具有优先级的,多个线程同时存在,并不是说这些线程都可能被运行,操作系统会默认调用优先级高的线程,线程之间会有一个抢占的方式,谁先抢到,谁就先执行!Join();方法是阻塞当前线程,打个比方说:当有a b两个线程,启用b.join();方法时。a线程就会被挂起,直到b线程结束,a线程才继续执行,下面看下这段代码:
public class JoinTest extends Thread {
public JoinTest(String name){
super(name);
}
public void run(){//重写父类Thread的run方法
for(int i=1;i<=5;i++){
System.out.println(getName()+i);
}
}
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i==6){
Thread one =new JoinTest("半路杀出线程"+i);
one.start();
try {
one.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+i);
}

}
}

需要注意的是:main方法启动时会自动才创建当前线程的主线程,楼主可以运行下这段代码试试,看看效果