join:字面意思:加入
在多线程中为插入到当前线程中,也就是说调用了join方法的线程会在当前线程中先执行完毕后,当前线程才可以继续执行
代码示例:
public class Main {
private static class NewThread implements Runnable{
private Thread thread;
public NewThread(Thread thread) {
this.thread = thread;
}
@Override
public void run() {
//thread线程插队到了当前的线程中执行
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是NewThread类中的【"+Thread.currentThread().getName()+"】线程,我被"+thread.getName()+"线程插队了。。。");
}
}
private static class JoinThread implements Runnable{
@Override
public void run() {
System.out.println("我是JoinThread类中的【"+Thread.currentThread().getName()+"】线程,我先执行");
}
}
public static void main(String[] args) {
//创建需要插队的线程
JoinThread joinThread = new JoinThread();
Thread thread = new Thread(joinThread);
//创建被插队的线程
NewThread newThread = new NewThread(thread);
Thread thread1 = new Thread(newThread);
//启动被插队的线程
thread1.start();
//启动要插队的线程
thread.start();
//主线程休眠2秒钟,等待上面两个线程执行完成
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是Main类中的【"+Thread.currentThread().getName()+"】线程,我最被执行。。。");
}
}