java线程的生命周期(4)

源地址 http://www.journaldev.com/1044/thread-life-cycle-in-java-thread-states-in-java  作者 Pankaj 

Thead声明周期 - Java中的线程状态

         了解Java中的线程声明周期和线程状态是非常重要的,当你使用线程和编程对多线程环境中。



    在过去的教程中,我们创建一个Java Thead类通过实现Runable接口或者通过继承Thead类,但开始一个java线程,我们首先创建一个Thead对象和调用start()方法为例执行run()方法作为作为一个线程。

Java中Thead声明周期

在下图中展示的是Java Thead的不同声明周期,我们能够创建一个线程在java并且开启它,但是如何Thead的状态改变从Runnable(可运行状态)到 Running(运行状态)到Blocked(阻塞状态)依靠OS(操作系统)实现的 thread scheduler(线程调度程序)并且Java没有完全控制。



New(新建状态)

当我们创建一个新的线程对象使用新的操作符,线程的状态是New状态,这时,线程不是活着的并且这个状态在java程序内部。

Runnable(可运行状态)

当我们调用start()方法在Thread对象中,这个状态改变为Runnable状态,控制是给线程调度程序完成执行,是否执行这个线程立即或保持它在Runnable的线程池中,取决于操作系统thread scheduler(线程调度程序)的实现。

Running(运行)

当线程执行的时候,线程的状态改变为Running状态,thread scheduler选择其中一个线程从Runnable的线程池中,并且改变其状态为Running,CPU开始执行这个线程,一个Thead可以其状态为Runnable,Dead 或者Blocked 从Running状态依靠time slicing(时间切片),线程完成run()方法或者等待一些资源。

Blocked(阻塞)/Waiting(等待)

一个线程能够等待另一个线程完成使用线程的join方法,或者它能够等待一些资源是可用的。例如producer consumer problem(生产消费者)问题或者 waiter notifier implementation或者IO资源,那么它的状态改变为Waiting,一旦这个线程状态等待结束,这个线程的状态改变为Runnable状态,并且重新回到Runnable的线程池中。

Dead(死亡)

一旦Thead执行完成,它的状态改变为Dead并且可认为它是死亡的。


以上为不同的线程状态,很高兴认识他们,线程如何改变它的状态。这些都在java线程的声明周期中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值