thread的join()方法实例;

package day04;
/**
 * 使用两个线程模拟图片下载过程,详细要求如下:
 * 1、创建线程t1,该线程模拟实现图片下载的过程,即在该线程中实现输出字符串"t1线程:正在下载图片:"+下载的百分数,例如:
 * "t1线程:正在下载图片:40%",到100%之后,显示"t1:图片下载完成".
 * 2、创建线程t2,在该线程中,首先输出"t2:等待图片下载完毕";然后将t1线程作为t2线程的子线程;最后,输出"t2:显示图片".
 * 3、启动线程t1,t2;
 * 4、要求,一定是线程t1执行完毕之后,才会执行线程t2中的显示图片。即显示了“t1:图片下载完成”之后,才会显示“t2:显示图片”。
 * @author Administrator
 *
 */
public class TestJoin {
    public static void main(String[] args) {
        final Thread t1=new Thread(){
            public void run(){
                for(int i=0;i<=10;i++){
                    System.out.println("t1线程:正在下载图片:"+i*10+"%");
                    try{
                        Thread.sleep(100);
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
                }
                System.out.println("t1:图片下载完成");
            }
        };
        Thread t2=new Thread(){
            public void run(){
                System.out.println("t2:等待图片下载完毕");
                try{
                    t1.join();//使用了join()方法,让t1子线程加入进来。t2主线程主动让出cpu,等待t1线程执行结束,在执行t2线程。
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
                System.out.println("t2:显示图片");
            }
        };

        t1.start();
        t2.start();
    }
}

运行结果:

t1线程:正在下载图片:0%
t2:等待图片下载完毕
t1线程:正在下载图片:10%
t1线程:正在下载图片:20%
t1线程:正在下载图片:30%
t1线程:正在下载图片:40%
t1线程:正在下载图片:50%
t1线程:正在下载图片:60%
t1线程:正在下载图片:70%
t1线程:正在下载图片:80%
t1线程:正在下载图片:90%
t1线程:正在下载图片:100%
t1:图片下载完成
t2:显示图片

运行结果是控制台先输出了“t2:等待图片下载完毕”,也输出了“t1线程:正在下载图片:0%”,以及“t1线程:正在下载图片:20%”等信息。最后,直到输出“t1:图片下载完成”后,才会输出“t2:显示图片”。
这是因为使用了join方法,该方法在此用于等待t1线程执行结束,在执行t2线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值