- package exer.psr.thread;
- /**
- * 线程的生命周期和五种状态(虚拟机状态)。虚拟机状态和实际操作系统中的线程状态会有所不同。
- * 创建(NEW):用new创建线程对象,但至今尚未启动的线程状态。
- *
- * 运行(RUNNABLE):可运行线程的线程状态。使用start方法赋予线程执行资格。
- * 处于可运行状态的某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中的其他资源,比如处理器。
- *
- * 阻塞(BLOCKED):受阻塞并且正在等待监视器锁的某一线程的线程状态。
- *
- * 冻结(WAITING或者TIMED_WAITING):线程执行过程中碰到sleep(long time)和wait()方法时,放弃执行资格。
- * 进入冻结状态的sleep方法和wait方法都会抛出中断异常。
- * 冻结状态会通过sleep时间到或者收到由同步锁发来的notify()和notifyAll()方法来正常结束并回到运行状态。
- * 也可以通过interrupt()方法强制结束线程冻结,回到运行状态,但会发生中断异常InterruptException。
- *
- * 消亡(TERMINATED):线程run()方法执行结束,线程对象变为垃圾。或者通过已过时的stop()方法强行结束线程。
- *
- * 这五种状态在Thread类中用一个内部枚举类State描述:Thread.State。
- * @author Administrator
- *
- */
- public class ThreadLife {
- public static void main(String[] args) throws InterruptedException {
- Thread t = new Thread() {
- public void run() {
- System.out.println("thread run 1");
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("thread run 2");
- }
- };
- System.out.println(t.getState()); //NEW状态
- t.start();
- System.out.println(t.getState()); //RUNNABLE状态
- Thread.sleep(1000);
- System.out.println(t.getState()); //TIMED_WAITING状态
- Thread.sleep(2000);
- System.out.println(t.getState()); //TERMINATED状态
- }
- }
复制代码 |
|