进程,线程池,线程

(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. 进程之间相互独立,线程之间共享内存空间

 

原文地址:https://www.cnblogs.com/yu-xia-zheng-ye/p/13480887.html