当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

Java多线程初学者指南(4):线程的生命周期

    与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法。

     //  开始线程
    public   void  start( );
    public   void  run( );

    
//  挂起和唤醒线程
    public   void  resume( );      //  不建议使用
    public   void  suspend( );     //  不建议使用
     public   static   void  sleep( long  millis);
    public   static   void  sleep( long  millis,  int  nanos);

    //  终止线程
    public   void  stop( );        //  不建议使用
     public   void  interrupt( );

    //  得到线程状态
     public   boolean  isAlive( );
    
public   boolean  isInterrupted( );
    public   static   boolean  interrupted( );

    //  join方法
     public   void  join( )  throws  InterruptedException;

    一、创建并运行线程

    线程在建立后并不马上执行run方法中的代码,而是处于等待状态。线程处于等待状态时,可以通过Thread类的方法来设置线程不各种属性,如线程的优先级(setPriority)、线程名(setName)和线程的类型(setDaemon)等。

    当调用start方法后,线程开始执行run方法中的代码。线程进入运行状态。可以通过Thread类的isAlive方法来判断线程是否处于运行状态。当线程处于运行状态时,isAlive返回true,当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。下面的代码演示了线程的创建、运行和停止三个状态之间的切换,并输出了相应的isAlive返回值。

package  chapter2;

public   class  LifeCycle  extends  Thread
{
    
public   void  run()
    {
        
int  n  =   0 ;
        
while  (( ++ n)  <   1000 );        
    }
     
    
public   static   void  main(String[] args)  throws  Exception
    {
        LifeCycle thread1 
=   new  LifeCycle();
        System.out.println(
" isAlive:  "   +  thread1.isAlive());
        thread1.start();
        System.out.println(
" isAlive:  "   +  thread1.isAlive());
        thread1.join();  
//  等线程thread1结束后再继续执行 
        System.out.println( " thread1已经结束! " );
        System.out.println(
" isAlive:  "   +  thread1.isAlive());
    }
}

    要注意一下,在上面的代码中使用了join方法,这个方法的主要功能是保证线程的run方法完成后程序才继续运行,这个方法将在后面的文章中介绍

    上面代码的运行结果:

isAlive: false
isAlive: true
thread1已经结束!
isAlive: false

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接