黑马程序员技术交流社区

标题: 如何让某个线程执行完后再继续执行其它代码 [打印本页]

作者: 李会成    时间: 2013-2-3 19:43
标题: 如何让某个线程执行完后再继续执行其它代码
本帖最后由 李会成 于 2013-2-4 15:17 编辑
  1. class Tick implements Runnable
  2. {
  3.     public static int num = 0;
  4.     public int tic = 100;
  5.     public void run()
  6.     {
  7.         while (tic > 0)
  8.         {
  9.             System.out.println(Thread.currentThread().getName()+"--"+tic--);
  10.             num++;
  11.         }
  12.     }
  13. }
  14. class DemoThread2
  15. {
  16.     public static void main(String[] args)
  17.     {
  18.         Tick t = new Tick();
  19.         Thread t1 = new Thread(t);
  20.         Thread t2 = new Thread(t);
  21.         Thread t3 = new Thread(t);
  22.         Thread t4 = new Thread(t);
  23.         t1.start();
  24.         t2.start();
  25.         t3.start();
  26.         t4.start();

  27.         System.out.println("--------------------"+t.num);
  28.     }
  29. }
复制代码
我定义num是为了看看System.out.println(Thread.currentThread().getName()+"--"+tic--);这句代码到底执行了多少次,
我想让t1,t2,t3,t4都执行完毕后再打印下num,有没有什么办法?
呵呵,可能这个没啥意义,不过还是想看一下结果。
作者: 铿锵科技    时间: 2013-2-3 20:20
如何让某个线程(所指是那个线程,请说明)执行完后 再继续执行其它代码 所要执行的是什么代码,请说明
作者: 陈科宇    时间: 2013-2-4 00:41
Tick t = new Tick();
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);
        Thread t3 = new Thread(t);
        Thread t4 = new Thread(t);
        Thread.currentThread().setPriority(1);
        /*
         * 我设定了主线程的优先级为最低级,所以它会静静等待其他线程
         * 执行完之后再输出num的值,希望你能满意。
         */
        t1.start();
        t2.start();
        t3.start();
        t4.start();

        System.out.println("--------------------"+t.num);
作者: 李挺    时间: 2013-2-4 10:20
楼上的方法不行,设置了最低级后,不代表不运行
  1. class Tick implements Runnable
  2. {
  3.     public static int num = 0;
  4.     public int tic = 100;
  5.     public void run()
  6.     {
  7.         while (tic > 0)
  8.         {
  9.             System.out.println(Thread.currentThread().getName()+"--"+tic--);
  10.             num++;
  11.         }
  12.                
  13.     }
  14. }
  15. class Day0901
  16. {
  17.     public static void main(String[] args) throws Exception
  18.     {
  19.                 Tick t = new Tick();
  20.         Thread t1 = new Thread(t);
  21.         Thread t2 = new Thread(t);
  22.         Thread t3 = new Thread(t);
  23.         Thread t4 = new Thread(t);
  24.         t1.start();
  25.         t2.start();
  26.         t3.start();
  27.         t4.start();

  28.                
  29.                 t1.join();//join各个线程让主线程等待
  30.                 t2.join();
  31.                 t3.join();
  32.                 t4.join();
  33.                


  34.                 System.out.println("num="+t.num);
  35.     }
  36. }
复制代码
你试试下
作者: 李培根    时间: 2013-2-18 11:32
请勿复制他人帖子,技术分不是入学的门槛而是为了帮助大家学习而存在的。

请勿再次发此类帖子了!

此贴就关闭了。此后如有再次发现直接封禁处理,请看到此贴的会员也加以注意。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2