zoukankan      html  css  js  c++  java
  • 6.3Java线程状态

    6.3Java线程状态

    线程五大状态

    • 新生状态--->代码层面写好了该线程

    • 就绪状态--->告诉cpu该线程可以调度了

    • 运行状态--->cpu调度了该线程开始执行该线程了

    • 阻塞状态--->cpu调度过程当中遇到的其他状态(丧失执行的权力)

      • 同步阻塞--->synchronized--->锁可用--->就绪状态

      • 等待阻塞--->wait()等到到同步--->notify()

      • IO流阻塞等--->sleep()/join()

    • 死亡状态--->run方法结束

    具体图示:

    注意:

    • 线程阻塞以后不是马上就能运行,而是回到就绪状态等待cpu调用

    • 线程死亡之后不能重新开启,再次开启就是一个新的线程

    线程状态详细图

    新生状态:
    • Thread t = new Thread();
      • 当新建了一个线程对象的时候就进入了新生状态

      • 新生状态的线程有自己的内存空间--->工作空间

      • 工作空间与主存交互--->从主内存拷贝数据到工作空间进行操作

    就绪状态:
    • 调用start()方法,线程进入就绪状态--->等待cpu的调度

    • 进入就绪状态表示具备运行的能力和运行的条件--->进入就绪队列,等待系统为其分配cpu

    • 一旦获得cpu才会真正执行run方法

    进入就绪状态的方法:

    • start状态

    • 解除阻塞状态再次进入就绪状态

    • 调用yeild方法--->中断、让出cpu

    • jvm本身将cpu从本地线程切换到其他线程

    运行状态:

    特点:

    • 从就绪状态被cpu调度到了进入运行状态

    • 不会从阻塞状态回到运行状态

    阻塞状态

    四种情况:

    • sleep--->拿着资源等待多少秒(占用资源不允许其他线程使用)

    • wait--->允许别人在等待时候占用资源

    • join--->加入、合并、插队,等待别人服务完成才进行才做

    • IO操作--->read、write--->通过操作系统去调度也会进入阻塞

    死亡状态

    一般死亡原因:

    • 代码执行完毕正常结束

    • 线程被强制终止

      • stop

      • distroy

      •  

     

    It's a lonely road!!!
  • 相关阅读:
    T-SQL over()函数在单个表中的聚合
    jQuery EasyUI DataGrid API 中文文档
    ASP.Net UpdatePanel控件(转)
    java多线程系类:基础篇:03Thread中的start()和run()的区别
    java多线程系类:基础篇:02常用的实现多线程的两种方式
    java多线程系类:基础篇:01基本概念:
    完全二叉树的概念
    007商城项目:商品列表查询-需求分析,以及Spinmvc的访问知识
    006商城项目:该项目的路径访问问题
    githup上传代码
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14847141.html
Copyright © 2011-2022 走看看