Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3298839
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2011-04-01 13:49:25

      Thread类中的join方法的功能就是使异步执行的线程变成同步执行。
      thread.join()应该是让其它线程进入阻塞状态,等当前的thread执行完之后,才允许其它线程执行 。
例:
  1. /**
  2.  * 线程的join举例.
  3.  * @version V1.0 ,2011-4-1
  4.  * @author xiahui
  5.  */
  6. public class JoinThread extends Thread
  7. {
  8.      private int count=0;

  9.     public void run(){
  10.      while (true){
  11.      System.out.println(this.getName()+(++count));
  12.      try{
  13.      sleep(300);
  14.      }catch(InterruptedException ex){
  15.      }
  16.      if(count == 3)
  17.      return;
  18.      }
  19.      }
  20.     
  21.     public static void main(String[] args) throws Exception
  22.     {
  23.         JoinThread counter1= new JoinThread();
  24.         JoinThread counter2 = new JoinThread();
  25.         JoinThread counter3 = new JoinThread();
  26.         
  27.         counter1.setName("counter1_");
  28.         counter2.setName("counter2_");
  29.         counter3.setName("counter3_");
  30.         
  31.         counter1.start();
  32.         counter2.start();
  33.         counter3.start();
  34.     }

  35. }
输出结果
  1. counter1_1
  2. counter3_1
  3. counter2_1
  4. counter1_2
  5. counter3_2
  6. counter2_2
  7. counter1_3
  8. counter2_3
  9. counter3_3
从结果可以看出,三个线程是异步执行的,输出的次序是无序的

现在要求三个线程依次执行
  1.         counter1.start();
  2.         counter1.join(); //等待counter1结束,其它线程才能执行
  3.         counter2.start();
  4.         counter2.join();//等待counter2结束,其它线程才能执行
  5.         counter3.start();
输出结果
  1. counter1_1
  2. counter1_2
  3. counter1_3
  4. counter2_1
  5. counter2_2
  6. counter2_3
  7. counter3_1
  8. counter3_2
  9. counter3_3



参考文献
1.
阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~