- 相关推荐
java线程的几种状态
导语:线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。下面是Java线程的介绍,欢迎参考!
java线程的几种状态1
新建:new一个Thread对象或者其子类对象就是创建一个线程,当一个线程对象被创建,但是没有开启,这个时候,
只是对象线程对象开辟了内存空间和初始化数据。
就绪:新建的对象调用start方法,就开启了线程,线程就到了就绪状态。
在这个状态的.线程对象,具有执行资格,没有执行权。
运行:当线程对象获取到了CPU的资源。
在这个状态的线程对象,既有执行资格,也有执行权。
冻结:运行过程中的线程由于某些原因(比如wait,sleep),释放了执行资格和执行权。
当然,他们可以回到运行状态。只不过,不是直接回到。
而是先回到就绪状态。
死亡:当线程对象调用的run方法结束,或者直接调用stop方法,就让线程对象死亡,在内存中变成了垃圾。
java线程的几种状态2
先说结论:
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时会进入超时等待态;和等待态的区别就是,超时之后会加入到阻塞队列中去。
【java线程的几种状态】相关文章:
java的多线程12-04
java多线程03-27
java语言的多线程11-25
Java线程编程中的主线程详细介绍04-02
Java多线程的开发技巧12-01
关于Java多线程介绍04-02
Java多线程问题总结11-27
JAVA多线程之线程间的通信方式解析04-02
java多线程-线程通信实例详细解读04-02