首页 > 学院 > 开发设计 > 正文

thread的join()方法实例;

2019-11-06 06:26:07
字体:
来源:转载
供稿:网友
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线程。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表