(20200811将这些天复习的内容放到博客备份)
线程池的五个状态:
- Running:可以接受新的任务,也可以处理阻塞队列里的任务
- Shutdown:不能接受新的任务,可以处理阻塞队列里的任务,running状态下调用shutdown()函数会装变成shutdown状态
- Stop:不能接受新的任务,也不能处理阻塞队列里的任务,running状态和shutdown状态调用shutdownnow()函数会转变为stop状态
- Tidying:所有的任务已经终止,并且有效线程数为0,若用户再该状态需要进行一些操作,可重写terminated()函数,执行完terminated()函数之后会进入terminated状态
- Terminated:线程池彻底终止
进程的状态
- 新建状态:为一个新进程创建创建PCB
- 就绪状态:进程所有资源已经就绪,等待CPU时间
- 运行状态:就绪状态的进程获得了CPU时间
- 阻塞状态:等待某个事件
- 终止状态:PCB清零,并将PCB空间返回系统
就绪——》运行:获得CPU时间
运行——》就绪:时间片用完
运行——》阻塞:运行进程因为某个等待事件进入了阻塞状态,入I/O
阻塞——》就绪:某个等待事件已经完成,比如I/O完成
线程的五大状态
- 新建状态(New):线程刚刚开始新建,程序还未开始运行代码。
- 就绪状态(Runnable):一个新建的线程并不自动运行,调用start()方法后进入就绪状态
- 运行状态(Running):处于就绪状态的进程获得cpu时间后进入运行状态,在运行状态下真正开始执行run()方法
- 阻塞状态(Blocked):一个运行状态的线程可能由于一下原因进入阻塞状态
(1) 应为IO被阻塞
(2) 调用了sleep()方法
(3) 和其他线程抢夺一个锁
(4) 等待一个触发条件
处于阻塞状态的线程暂时让出cpu时间,其他处于阻塞状态的线程可以获得cpu时间进入运行状态
- 死亡状态(Dead):进入死亡状态的原因:
(1) 正常运行完run()方法
未捕获某个异常而进入死亡状态
进程和线程
- 进程是资源分配的最小单位,线程是cup调度的最小单位
- 一个进程由多个线程组成
- 进程之间相互独立,线程之间共享内存空间