Java 线程的生命周期

package com.threadlifetime.ljb;
/**
 * 1.线程的生命周期:
 * 		指线程从创建到启动,直至运行结束
 *      可以通过调用 Thread 类的相关方法影响线程的运行状态
 * 2.线程的运行状态:
 * 	新建(New):当创建了一个 Thread 对象时,该对象就处于“新建状态”,没有启动,因此无法运行
 * 	可执行(Runnable):其他线程调用了处于新建状态线程的 start 方法,该线程对象将转换到“可执行状态”
 * 						线程拥有获得 CPU 控制权的机会,处在等待调度阶段
 * 	运行(Running):处在“可执行状态”的线程对象一旦获得了 CPU 控制权,就会转换到“执行状态”
 * 					在“执行状态”下,线程状态占用 CPU 时间片段,执行 run 方法中的代码
 *					处在“执行状态”下的线程可以调用 yield 方法,该方法用于主动出让 CPU 控制权。
 *					线程对象出让控制权后回到“可执行状态”,重新等待调度。
 * 	阻塞(Blocking):线程在“执行状态”下由于受某种条件的影响会被迫出让 CPU 控制权,进入“阻塞状态”。
 *					进入阻塞状态的三种情况:调用 sleep 方法,调用 join 方法,执行 I/O 操作
 * 	死亡(Dead):线程调用 stop()方法时或 run()方法结束后,即进入死亡状态.
 *
 */
public class ThreadTest {
	public static void main(String[] args) throws InterruptedException {
		MyThread mt = new MyThread();
		Thread th = new Thread(mt,"thread");
		System.out.println("new后的状态:" + th.getState());
		th.start();
		System.out.println("start()后的状态:" + th.getState());
		Thread.sleep(1000);
		System.out.println("等待时的状态:" + th.getState());
		Thread.sleep(4000);
		System.out.println("结束后的状态:" + th.getState());
	}
}
class MyThread implements Runnable{
	@Override
	public void run() {
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(Thread.currentThread().getName()+"end");
	}
}

你可能感兴趣的:(java,java-ee,java)