当前位置: 首页 > news >正文

讲一下线程状态并且解释一下?

操作系统层面下,分为五种状态:

在这里插入图片描述

  1. 新建(NEW):新创建了一个线程对象,还未与操作系统线程关联。
  2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了线程对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。
  3. 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片1(timeslice) ,执行程序代码。
  4. 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种:
    (一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
    (二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
    (三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
  5. 死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。

  1. 时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。 ↩︎

相关文章:

  • windows 和 linux ssh互连
  • 【代码规范】
  • 【程序员眼中的统计学(12)】相关与回归:我的线条如何? (转)
  • 讲一下进程间通讯方式?
  • Docker的文件系统
  • 信号和信号量有什么区别?
  • 进程的调度算法有哪些?
  • ORA-00604 ORA-14452 ORA-20783
  • 线程同步的四种方式
  • 2015年小结
  • [<死锁专题>]
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 你知道那些常用的设计模式?
  • 百度地图2.0瓦片地址获取(窗口内瓦片)
  • 设计模式的六大原则?
  • [译]Python中的类属性与实例属性的区别
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • ES6之路之模块详解
  • HTTP请求重发
  • idea + plantuml 画流程图
  • Java 最常见的 200+ 面试题:面试必备
  • JavaWeb(学习笔记二)
  • JS实现简单的MVC模式开发小游戏
  • Laravel核心解读--Facades
  • SpringCloud集成分布式事务LCN (一)
  • ubuntu 下nginx安装 并支持https协议
  • Vue.js 移动端适配之 vw 解决方案
  • 汉诺塔算法
  • 三栏布局总结
  • 通过几道题目学习二叉搜索树
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 源码安装memcached和php memcache扩展
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云ACE认证之理解CDN技术
  • ( 10 )MySQL中的外键
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (6)设计一个TimeMap
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (NSDate) 时间 (time )比较
  • (zhuan) 一些RL的文献(及笔记)
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)3D模板阴影原理
  • (转)fock函数详解
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net FrameWork总结
  • .net 发送邮件
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NetCore部署微服务(二)