操作系统和java的线程状态

今天在看juc,发现java的源码线程状态和操作系统的不同,java的Thread.State源码中, 是有六种状态的,下面来说说操作系统和java的线程的不同。

操作系统中线程的状态有:

初始状态(NEW)
可运行状态(READY)
运行状态(RUNNING)
等待状态(WAITING)
终止状态 (TERMINATED)

java的线程状态有:这里是从java的Thread.State源码里面翻的

public enum State {
   //新生
    NEW,
    //运行
    RUNNABLE,
    //阻塞
    BLOCKED,
    //无限期等待
    WAITING,
    //限时等待
    TIMED_WAITING,
    //结束
    TERMINATED;
}

区别:
当线程调用阻塞式 API时,进程(线程)进入等待状态,这里指的是操作系统层面的。从 JVM层面来说,Java线程仍然处于 RUNNABLE 状态。JVM 并不关心操作系统线程的实际状态,从 JVM 看来,等待CPU使用权(操作系统状态为可运行态)与等待 I/O(操作系统处于等待状态)没有区别,都是在等待某种资源,所以都归入RUNNABLE 状态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值