Chinaunix首页 | 论坛 | 博客
  • 博客访问: 247507
  • 博文数量: 55
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 261
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-19 01:34
文章分类

全部博文(55)

文章存档

2013年(37)

2009年(6)

2008年(12)

我的朋友

分类: Java

2013-09-05 20:08:32

      一般来说:有两种方法可以知道线程的结束。一:可以在线程中调用isAlive();二:调用join()方法

       一  线程中调用isAlive()方法,它的一般形式如下:final boolean isAlive();如果调用他的线程仍在运行,返回true,否则,返回false;
            用法:NewThread th1 = new NewThread("Thread1");
                  th1.t.isAlive();
      
       二  线程中调用join()方法,它的一般形式如下:
final void join() throws InterruptedException;这个方法一直在等待,直到调用他的线程终止。join还有另一种形式允许指定等待线程终止的最大时间。
            用法:NewThread th1 = new NewThread("Thread1");
                  th1.t.join();

例子如下:

点击(此处)折叠或打开

  1. package thread;

  2. public class NewThread implements Runnable{
  3.     Thread t;
  4.     String name="";
  5.     NewThread(String name){
  6.         this.name=name;
  7.         t = new Thread(this,name);
  8.         //t = new Thread();
  9.         System.out.println("Child Thread:"+t);
  10.         //t.run();
  11.         t.start();
  12.     }
  13.     public void run()
  14.     {
  15.         try {
  16.             for (int n = 5; n > 0; n--) {
  17.                 System.out.println(name+":" + n);
  18.                 Thread.sleep(1000);
  19.             }
  20.         } catch (Exception e) {
  21.             // TODO: handle exception
  22.             System.out.println(name+":"+"interrupted");
  23.         }
  24.         System.out.println("Exiting "+name+" thread");
  25.     }

  26. }

点击(此处)折叠或打开

  1. package thread;

  2. public class DemoJoin {

  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         // TODO Auto-generated method stub

  8.         NewThread th1 = new NewThread("Thread1");
  9.         NewThread th2 = new NewThread("Thread2");
  10.         NewThread th3 = new NewThread("Thread3");
  11.         
  12.         System.out.println("Thread1 is Alive:"+th1.t.isAlive());
  13.         System.out.println("Thread2 is Alive:"+th2.t.isAlive());
  14.         System.out.println("Thread3 is Alive:"+th3.t.isAlive());
  15.         
  16.             try {
  17.                 System.out.println("Waiting for Thread finished");
  18.                 th1.t.join();
  19.                 th2.t.join();
  20.                 th3.t.join();
  21.             } catch (Exception e) {
  22.                 // TODO: handle exception
  23.                 System.out.println("Main thread Interrupt");
  24.             }
  25.             
  26.             System.out.println("Thread1 is Alive:"+th1.t.isAlive());
  27.             System.out.println("Thread2 is Alive:"+th2.t.isAlive());
  28.             System.out.println("Thread3 is Alive:"+th3.t.isAlive());
  29.             System.out.println("Main Thread existing");
  30.     }

  31. }



阅读(1429) | 评论(0) | 转发(0) |
0

上一篇:线程之同步

下一篇:初识多线程

给主人留下些什么吧!~~