• java 线程的状态


    java线程有六种状态:
    在Thread类里有一个枚举类型State:
    NEW: 新建状态
    RUNNABLE: 执行状态(run ready)
    BLOCKED: 阻塞状态
    WAITING: 等待状态
    TIMED_WAITING: 定时等待状态
    TERMINATED: 结束状态
     
    大致归类定义:
    线程自身状态:
    NEW : 新建一个线程,未做任何操作的时候线程处于此状态
    RUNNABLE:线程被CPU挑选执行或者在CPU内切换执行时等待都属于此状态
    TERMINATED:线程结束时的状态
     
    线程与其他线程有关联的状态:
    BLOCKED:资源被其他线程占用,等待资源的时候处于此状态
    WAITING:线程获取到资源,暂停执行状态,等待其他线程通知。暂停时间无限制,
    TIMED_WAITING:同WAITING,有时间限制
     
    举例说明:
    在有个镇上只有一家饭店(这个饭店就是CPU),假设饭店同一时间只提供一个人就餐(在同一 时间段 内,电脑CPU只能处理一个线程(线程A),张三和李四都饿了,都需要去吃饭(吃饭这个决定就是NEW状态,张三吃饭属于线程A,李四吃饭属于线程B),他们来到饭店(线程启动),张三发现饭店没人就餐,就进去就餐(线程A进入RUNNABLE状态),进入餐馆后有可能上菜需要等待一会儿(在RUNNABLE状态下的线程可能会处于等待状态, 因为它正在等待一些系统资源的释放),上菜后张三就餐。这个时候李四来了,李四发现餐馆有人在使用了,就在餐馆外等待(BLOCKED,因为资源被占用导致等待),张三吃饭的时候,老板说卫生局的要来进行卫生检查(线程C join),麻烦你先等一下,张三只好等着(线程A处于WAITING状态),卫生局的检查完毕,通知张三你可以继续用餐了(线程A唤醒继续执行),张三吃完饭后走了(线程A进入TERMINATED状态),这个时候李四可以进去用餐了(线程B解除BLOCKED,进入RUNNABLE),李四吃完饭后也离开了饭店(线程B进入TERMINATED状态);
    注:如果老板说你等两分钟,如果还没有检查好的话,你就走吧(就是TIMED_WAITING),张三则在两分钟之内没有接到老板的通知就自行离开了。
     
  • 相关阅读:
    lnmp+memcache+tomcat
    redis的主从搭建
    curl只取状态码
    Tomcat的优化
    pip9 安装 centos6.8
    文件的下载
    保存图片到图库更新图库
    上传图片总结
    Android 大图片预览ViewPager
    Android 软件盘 Editext 问题
  • 原文地址:https://www.cnblogs.com/wdlove/p/9267618.html
Copyright © 2020-2023  润新知