快速业务通道

Java多线程初学者指南(4):线程的生命周期 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

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

时间:2010-02-01 BlogJava 银河使者

与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过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

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

时间:2010-02-01 BlogJava 银河使者

二、挂起和唤醒线程

一但线程开始执行run方法,就会一直到这个run方法执行完成这个线程才退出。但在线程执行的过程中,可以通过两个方法使线程暂时停止执行。这两个方法是suspend和sleep。在使用suspend挂起线程后,可以通过resume方法唤醒线程。而使用sleep使线程休眠后,只能在设定的时间后使线程处于就绪状态(在线程休眠结束后,线程不一定会马上执行,只是进入了就绪状态,等待着系统进行调度)。

虽然suspend和resume可以很方便地使线程挂起和唤醒,但由于使用这两个方法可能会造成一些不可预料的事情发生,因此,这两个方法被标识为deprecated(抗议)标记,这表明在以后的jdk版本中这两个方法可能被删除,所以尽量不要使用这两个方法来操作线程。下面的代码演示了sleep、suspend和resume三个方法的使用。

package chapter2; public class MyThread extends Thread {  class SleepThread ext

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号