zoukankan      html  css  js  c++  java
  • 线程的状态及其转换

    线程状态:(六种)

    public enum State {
            NEW,
            RUNNABLE,
            BLOCKED,
            WAITING,
            TIMED_WAITING,
            TERMINATED;
        }

    NEW:新建状态

    用new创建的线程处于新建状态,此时他和其他的Java对象一样,仅仅在堆中分配了内存

    Runable:就绪状态

    当线程对象被创建后,调用了start方法,线程就处于就绪状态,处于就绪状态的线程(其他的条件都满足,可以等待获取CPU的使用权),等待获取CPU的使用权

    Running:运行状态

    处于运行状态的线程也就占用的CPU,执行线程代码。只能就绪状态的线程进入到运行状态

    Blocked:阻塞状态

     阻塞状态是指线程因为某些原因放弃CPU(缺少资源:IO、锁),暂时停止运行,当前的线程处于阻塞状态

    Waiting:等待状态

     当线程处于该状态,如果某个线程中的对象的wait()时,JVM就会将线程放入到等待池池

    Timed_waiting:超时等待

    sleep(long time),jion(long time) 会使线程处于睡眠状态

    Terminated:终止状态

    当线程执行到run()方法结尾时,就进入到终止状态,该表示线程的生命周期结束

    线程状态转换:

     一个线程的生命周期中需要的状态:New、Runable、Running、Terminated四个状态。

    线程在需要响应的资源时,进入到阻塞状态:阻塞状态包含Waiting,Blocked、Time_waiting状态。

  • 相关阅读:
    谈谈对 ”框架“ 这个概念的理解,以及它和库的区别
    npm 安装或更新模块失败的解决办法
    vs 2017/2015/2013 如何定位C++内存泄漏
    django 在python 3中提示 无法找到 MySQLDB
    合并表中数据
    pymysql
    mysql-错误备查
    tensorflow-gpu 使用的常见错误
    Ubuntu 安装 tensorflow-gpu + keras
    mysql 查看表结构方法
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12458712.html
Copyright © 2011-2022 走看看