java线程技术3_线程的同步

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值