回顾了一下多线程的知识点,为学习netty做准备
先给出概念性的东西:
进程:可并发执行的程序在一个数据集合上的一次运行过程,是分配资源和调度的独立单位
目的是为了加大程序执行的并发性,改善资源利用率和提高系统效率
多线程:是进程中能够并发执行的,处理器调度和分派的基本单位,进程组成部分。
临界区:并发进程中与共享变量有关的程序段成为“临界区”。
共享变量:共享变量所代表的资源称为“临界资源”
线程的几种状态:1、就绪;2、运行;3、等待
Dijkstra提出为了正确有效使用临界资源,共享变量的并发进程应遵守临界区调度的三个原则:
互斥使用,有空让进,忙则等待,有限等待,有限等待;择一而入,算法可行(不会因为所选的调度策略造成进程饥饿甚至死锁)
死锁:如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的时间,而无限期陷入僵持的局面成为死锁
死锁的四个必要条件:
1、互斥条件:系统中存在临界区资源,进程应互斥的使用这些资源
2、占有和等待条件:进程在请求资源得不到满足而等待,不释放已占有的资源
3、不剥夺条件:已被占用的资源只能有属性释放,不允许被其他进程剥夺
4、循环等待条件:存在循环等待链,其中每一个进程都在链中等待下一个进程所持有的资源,造成这组进程处于永远等待状态