java线程的几种状态
导语:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。下面是Java线程的介绍,欢迎参考!
新建:new一个Thread对象或者其子类对象就是创建一个线程,当一个线程对象被创建,但是没有开启,这个时候,
只是对象线程对象开辟了内存空间和初始化数据。
就绪:新建的对象调用start方法,就开启了线程,线程就到了就绪状态。
在这个状态的线程对象,具有执行资格,没有执行权。
运行:当线程对象获取到了CPU的资源。
在这个状态的线程对象,既有执行资格,也有执行权。
冻结:运行过程中的线程由于某些原因(比如wait,sleep),释放了执行资格和执行权。
当然,他们可以回到运行状态。只不过,不是直接回到。
而是先回到就绪状态。
死亡:当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,在内存中变成了垃圾。
先说结论:
Java线程中一共有6种状态,分别为:NEW、RUNNABLE、WAITING、TIMED_WAITING、BLOCKED、TERMINATED,其中RUNNABLE包含READY和RUNNING状态,详情可见下***:
NEW:new一个Thread对象,但没有调用start方法前,线程处于初始状态
RUNNABLE:在Java中包括两种状态,RUNNING和READY
READY:就绪态,该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行;所有就绪态的线程存放在就绪队列中
RUNNING:获得cpu时间片,正在执行的'线程;由于每个cpu同一时刻只能执行一条线程,因此每个cpu每个时刻只有一条线程运行。
BLOCKED:阻塞态,当线程请求锁失败时,就会进入阻塞态,一旦请求成功就会进入就绪队列等待cpu调度;所有阻塞态的线程存放在阻塞队列中
WAITING:等待态,当运行中的线程调用wait、join、park函数时,当前线程进入等待态;所有等待线程放入等待队列;等待状态的线程需要被其他线程唤醒才能继续运行;进入等待状态会释放cpu时间片,以及资源(一般指锁)
TIMED_WAITING:超时等待态,当运行中的线程调用sleep(time)、wait(time)、parkNanos、parkUtil时会进入超时等待态;和等待态的区别就是,超时之后会加入到阻塞队列中去。
本文发布于:2023-07-29 03:43:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1693954238724166.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:java线程的几种状态.doc
本文 PDF 下载地址:java线程的几种状态.pdf
留言与评论(共有 0 条评论) |