Java线程的状态有哪几种

介绍

这篇文章主要讲解了“Java线程的状态有哪几种”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java线程的状态有哪几种”吧!

<节> <节>


<节> <节> <节> <节> <节> <节> <节> <节> <节>


<节> <节>

Java线程状态转换图


癑ava线程的状态有哪几种"

<节> <节> <节> <节>

Java线程状态


在Java线程的生命周期中,按复杂的并发场景考虑,可将Java线程的状态分为七种,分别是:新建,可运行,运行,无限期等待,限期等待,阻塞,结束。

,

1。新建(新)状态

新创建一个线程对象,尚未执行。

2。可运行(Runnable或准备)状态

新创建的线程调用开始方法后便处于Runnable状态,刚刚结束等待(获取到锁)或阻塞状态的线程也会处于Runnable状态,处于该状态的线程位于可运行线程池中,等待获取CPU资源。

,

3。运行(运行)状态

处于Runnable状态的线程获取到CPU资源,执行程序代码。

,

4。无限期等待(等待)状态

同步代码块内被锁住的对象调用了它的等待()方法或者在当前线程中调用了其他线程的加入()方法,那么当前线程将会释放占有的锁,释放CPU资源,阻塞在等待队列里面,一直等待被同步修饰的对象调用通知()或notifyAll()方法唤醒或者加入的其他线程执行结束(异常退出)。在并发时,处于无限期等待状态的线程被唤醒之后,还要去竞争对象的锁,如果竞争不到,线程将会被阻塞在对象的锁池中,竞争到锁之后,线程将会处于Runnable状态。

5。限期等待(等待时间)状态

与无限期等待(等待)状态不同之处在于,调用等待和加入方法时传入了等待限定时间。另外,线程调用睡眠()方法也会处于限期等待(等待时间)状态,<强>会释放CPU资源,但并不会释放锁强,一直到休眠结束变成可运行状态。

6。阻塞(阻塞)状态

线程程序执行到同步的代码块或Reentrant.lock()方法,对象的锁被其他线程占用时,当前线程将会被阻塞在对象的锁池中,处于阻塞(阻塞)状态。

,

7。结束(终止)状态

线程运行方法执行完毕或者异常退出,则该线程的生命周期终结,不能再次使用。

<节>


感谢各位的阅读,以上就是“Java线程的状态有哪几种”的内容了,经过本文的学习后,相信大家对Java线程的状态有哪几种这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

Java线程的状态有哪几种