zoukankan      html  css  js  c++  java
  • 进程,线程池,线程

    (20200811将这些天复习的内容放到博客备份) 

    线程池的五个状态:

    1. Running:可以接受新的任务,也可以处理阻塞队列里的任务
    2. Shutdown:不能接受新的任务,可以处理阻塞队列里的任务,running状态下调用shutdown()函数会装变成shutdown状态
    3. Stop:不能接受新的任务,也不能处理阻塞队列里的任务,running状态和shutdown状态调用shutdownnow()函数会转变为stop状态
    4. Tidying:所有的任务已经终止,并且有效线程数为0,若用户再该状态需要进行一些操作,可重写terminated()函数,执行完terminated()函数之后会进入terminated状态
    5. Terminated:线程池彻底终止

     

    进程的状态

    1. 新建状态:为一个新进程创建创建PCB
    2. 就绪状态:进程所有资源已经就绪,等待CPU时间
    3. 运行状态:就绪状态的进程获得了CPU时间
    4. 阻塞状态:等待某个事件
    5. 终止状态:PCB清零,并将PCB空间返回系统

    就绪——》运行:获得CPU时间

    运行——》就绪:时间片用完

    运行——》阻塞:运行进程因为某个等待事件进入了阻塞状态,入I/O
    阻塞——》就绪:某个等待事件已经完成,比如I/O完成

    线程的五大状态

    1. 新建状态(New):线程刚刚开始新建,程序还未开始运行代码。
    2. 就绪状态(Runnable):一个新建的线程并不自动运行,调用start()方法后进入就绪状态
    3. 运行状态(Running):处于就绪状态的进程获得cpu时间后进入运行状态,在运行状态下真正开始执行run()方法
    4. 阻塞状态(Blocked):一个运行状态的线程可能由于一下原因进入阻塞状态

    (1) 应为IO被阻塞

    (2) 调用了sleep()方法

    (3) 和其他线程抢夺一个锁

    (4) 等待一个触发条件

    处于阻塞状态的线程暂时让出cpu时间,其他处于阻塞状态的线程可以获得cpu时间进入运行状态

    1. 死亡状态(Dead):进入死亡状态的原因:

    (1) 正常运行完run()方法

    未捕获某个异常而进入死亡状态

    进程和线程

    1. 进程是资源分配的最小单位,线程是cup调度的最小单位
    2. 一个进程由多个线程组成
    3. 进程之间相互独立,线程之间共享内存空间

     

  • 相关阅读:
    数据库模糊查询
    Redis集群简介
    POI导出Excel的三种 workbook的区别
    mysql主从跳过错误
    MySQL server has gone away 问题解决方法
    Redis批量删除key的命令
    Python 3.6学习笔记(一)
    maven项目报错
    使用zabbix监控mysql的三种方式
    postgresql初体验
  • 原文地址:https://www.cnblogs.com/yu-xia-zheng-ye/p/13480887.html
Copyright © 2011-2022 走看看