黑马程序员技术交流社区
标题:
用Thread.State描述线程的五种状态
[打印本页]
作者:
li3N
时间:
2015-11-12 10:51
标题:
用Thread.State描述线程的五种状态
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状态
}
}
复制代码
作者:
许佳鑫
时间:
2015-11-12 12:12
已阅,学习
作者:
z13561291
时间:
2015-11-12 12:18
还没学到这,先了解下了
作者:
邸永明
时间:
2015-11-12 14:09
很实用 谢谢
作者:
2015竹林风
时间:
2015-11-12 15:55
学习了非常感谢
作者:
ln0491
时间:
2015-11-12 18:02
学习了。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2