java语言 百文网手机站

java线程的几种状态

时间:2022-12-14 16:22:22 java语言 我要投稿

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多线程的定义状态和属性11-29

浅谈java中线程的基本概念线程的基本状态以及状态之间的关系12-05

java的多线程04-15

java多线程11-02

Java多线程的线程守护例子09-04

Java线程知识笔记09-17

java语言的多线程03-24

Java线程同步的方法09-03

java多线程教程11-21