A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴硕 中级黑马   /  2012-10-17 09:04  /  1813 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴硕 于 2012-10-17 13:53 编辑

一个例子:
  1. public class JoinTest implements Runnable
  2. {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) throws InterruptedException
  7.         {
  8.                 // 启动一个线程
  9.                 new Thread(new JoinTest()).start();
  10.                
  11.                 for(int i = 0; i < 100; i ++)
  12.                 {
  13.                         if(i == 20)
  14.                         {
  15.                                 new Thread(new JoinTest()).join();    //这个线程并没有执行,如果使用start方法执行这个线程,那么怎样使用join方法
  16.                         }
  17.                         System.out.println(Thread.currentThread().getName()+"---"+i);
  18.                 }
  19.         }
  20.         
  21.         public void run()
  22.         {
  23.                 for(int i = 0; i < 100; i++)
  24.                 {
  25.                         System.out.println(Thread.currentThread().getName()+"---"+i);
  26.                 }
  27.         }

  28. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
本帖最后由 陈虹旭 于 2012-10-17 09:44 编辑

我估计这种情况只能用匿名内部类的方法来做吧,代码有一点点小修改,本类中的run()中我设置了为60,方便分辨清晰些,你试试,希望可以对你有点帮助
  1. public class JoinTest implements Runnable
  2. {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) throws InterruptedException
  7.         {
  8.                 // 启动一个线程
  9.            new Thread(new JoinTest()).start();
  10.            Thread t1 = new Thread()
  11.            {
  12.                      public void run()
  13.                      {
  14.                                for(int i = 0; i < 100; i ++)
  15.                               {
  16.                                          if(i >= 20)
  17.                                          {
  18.                                                        System.out.println(Thread.currentThread().getName()+"---"+i);
  19.                                          }
  20.                                                                
  21.                                }
  22.                      }
  23.            };
  24.            t1.start();
  25.            t1.join();
  26.         }
  27.         
  28.         public void run()
  29.         {
  30.                 for(int i = 0; i < 60; i++)
  31.                 {
  32.                         System.out.println(Thread.currentThread().getName()+"---"+i);
  33.                 }
  34.         }

  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 赞一个!

查看全部评分

回复 使用道具 举报
陈虹旭 发表于 2012-10-17 09:41
我估计这种情况只能用匿名内部类的方法来做吧,代码有一点点小修改,本类中的run()中我设置了为60,方便分 ...

很有帮助,谢谢
  1. public class JoinTest implements Runnable
  2. {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) throws InterruptedException
  7.         {
  8.                 // 启动一个线程
  9.                 new Thread(new JoinTest()).start();
  10.                
  11.                 for(int i = 0; i < 100; i ++)
  12.                 {
  13.                         if(i == 20)
  14.                         {
  15.                                 Thread t = new Thread(new JoinTest());
  16.                                 t.start();
  17.                                 t.join();
  18.                         }
  19.                         System.out.println(Thread.currentThread().getName()+"---"+i);
  20.                 }
  21.         }
  22.        
  23.         public void run()
  24.         {
  25.                 for(int i = 0; i < 1000; i++)
  26.                 {
  27.                         System.out.println(Thread.currentThread().getName()+"---"+i);
  28.                 }
  29.         }

  30. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马