join-线程

Thread提供了让一个线程等待另一个线程完成的方法join()方法。当某个程序执行流A中调用其他线程B的join()方法时,调用线程A将被阻塞,直到被join()方法加入的join线程B执行完毕,当前线程A才会重新回到就绪状态。
join():等待被join的线程B执行完毕,A线程才开始执行
join(long millis):等待被join的线程B的时间最长为millis毫秒。如果在millis毫秒内被join()的线程B还没有执行结束,A则不再等待

class JoinThread extends Thread{
    public JoinThread(String name){
        super(name);
    }
    @Override
    public void run(){
        for(int i=0;i<100;i++){
            try{
                Thread.sleep(200);
            }catch(Exception e){
                e.printStackTrace();
            }
            System.out.println(getName()+"->"+i);
        }
    }
}
public class DaemonThreadTest {
    public static void main(String[] args) throws InterruptedException {
        JoinThread joinThread = new JoinThread("被Join的线程B");
        joinThread.start();
        //joinThread.join(); //主线程A调用的(线程B执行join() )
        joinThread.join(5000); // 本来是等待B线程执行完,再执行A线程。可如果B线程5s内没有执行完,
                                            //则A线程不再等待,A开始执行,B线程也继续执行。
        System.out.println("主线程A执行完毕");//在joinThread线程B执行完毕后,主线程A才会继续执行。
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/81364458