首页 > 编程语言 > 详细

指定线程执行的顺序---join()

时间:2016-12-11 12:23:39      阅读:206      评论:0      收藏:0      [点我收藏+]

线程T1,T2,T3分别启动,如何让其执行顺序变为T3>T2>T1:

线程1:

 1 package test6;
 2 
 3 public class Thread1 extends Thread{
 4 
 5     private Thread thread2;
 6     public Thread1(Thread thread2){
 7         this.thread2=thread2;
 8     }
 9     @Override
10     public void run(){
11         try {
12             thread2.join();
13             System.out.println("线程1在执行");
14         } catch (InterruptedException e) {
15             e.printStackTrace();
16         }
17     }
18 }

线程2:

 1 package test6;
 2 
 3 public class Thread2 extends Thread{
 4 
 5     private Thread thread3;
 6     public Thread2(Thread thread3){
 7         this.thread3=thread3;
 8     }
 9     @Override
10     public void run(){
11         try {
12             thread3.join();
13             System.out.println("线程2在执行");
14         } catch (InterruptedException e) {
15             e.printStackTrace();
16         }
17     }
18 }

线程3:

 1 package test6;
 2 
 3 public class Thread3 extends Thread{
 4 
 5     @Override
 6     public void run(){
 7         try {
 8             System.out.println("线程3在执行。。。");
 9             Thread.sleep(2000);
10         } catch (InterruptedException e) {
11             // TODO Auto-generated catch block
12             e.printStackTrace();
13         }
14     }
15 }

执行:

 1 package test6;
 2 
 3 public class Run {
 4 
 5     public static void main(String[] args) {
 6         Thread3 t3=new Thread3();
 7         Thread2 t2=new Thread2(t3);
 8         Thread1 t1=new Thread1(t2);
 9         t1.start();
10         t2.start();
11         t3.start();
12     }
13 }

如图:启动顺序为t1,t2,t3.但是使用join后,执行顺序为t3,t2,t1

join的作用:使当前线程等正在执行的线程执行完。join内部调用的是wait方法没,所以释放锁。sleep不释放锁。

 

指定线程执行的顺序---join()

原文:http://www.cnblogs.com/noaman/p/6159306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!