线程Thread中的join方法

join():等待线程完成

join线程:程序中有多个线程并发执行时,在某些时候,一个线程必须等待另一个(另几个)线程执行完成后,

该线程才能继续向下执行。

Thread提供了让一个线程等待另一个线程完成的方法:join() 方法。

当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。

 

join()方法有3个版本:

join(): 无限等待,必须等到被join的线程执行完成。

join(毫秒数): 只等待多少毫秒,程序在指定的毫秒内必须完成该任务。

join(毫秒数, 纳秒数):等待多少毫秒、多少纳秒。

 

 

class MyRunnable implements Runnable{   
    public void run(){

        for(int i =0;i<10;i++){

            System.out.println(Thread.currentThread().getName()+"-----"+Thread.currentThread().getPriority()+"---"+i);
        }
    }
}

 

 

public class JoinTest {

    public static void main(String[] args)throws Exception {

        Runnable myRunnable = new MyRunnable();

        Thread myThread = new Thread(myRunnable);
        
        Thread myThread2 = new Thread(myRunnable);

        //设置优先级 (注意优先级设置最好使用Thread常量来处理)

        /**

         * int MAX_PRIORITY 10 最大优先级 (将有机会获得更多的CPU时间片) 

           int MIN_PRIORITY 1  最小优先级 

           int NORM_PRIORITY 5 默认优先级 (如果不设置就是默认)

         */
        myThread2.setPriority(Thread.MAX_PRIORITY);
        myThread.start();
        myThread2.start();
        
        System.out.println("----------------------------");

        for(int i =0;i<10;i++){

            System.out.println(Thread.currentThread().getName()+"--"+Thread.currentThread().getPriority()+"-"+i);

            if(i == 3){

                System.out.println("------join------------");

                // 谁调用join,谁就会先执行,等待join进来的线程执行完毕其他的线程才可以继续执行

                myThread.join();
       
                myThread2.join();

            }
        }
    }
}

 

join方法会更优先执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值