第一章 线程的基础


一、基础概念

1.什么是进程和线程?
·进程:是程序运行进行资源分配的最小单位。(由操作系统管理,分配资源)
·线程:一个进程内部会有多个线程,会共享这个进程的资源,是cpu调度的最小单位,是不能独立运行的,只能依托于进程来运行,并且线程是没有自己的资源的,必须依赖使用进程的资源。


2.什么是并行?
·并行:在同一时间点(同一时刻),能够同时执行的事务的能力。

举个列子: 在学校食堂吃饭,食堂会开有很多窗口,那么每个窗口同一个时刻只能给一个人打饭菜,
那么10个窗口,则能在这一个时刻同时给10个人打饭盛菜,那么这个食堂的并行能力为10。
在另外一个食堂,只有5个窗口,在同一时刻只能给5个人打饭菜,这个食堂的并行能力为5。
并行概念关注的点是在同一个时间点能够同时处理的事务的能力。

3.什么是并发?
·并发:与时间单位相关,在一个时间单位内,可以处理事务的能力。

同样举个食堂例子:两个窗口A和B,在10分钟内,A可以给排队的20个人打完饭菜,那么A窗口在这个
时间段内处理事务的能力为20;对于B窗口,由于打菜师傅的手喜欢多抖那么一抖,给每个人打菜的时
候,都多花费那么一点时间,导致B窗口在10分钟内只能给15个人打完饭菜,那么B窗口这个时间段内
处理事务的能力为15;
并发概念关注的点是在一段时间内,能够处理多少事务的能力。

二、使用高并发带来的好处及风险

1.使用多线程的好处?
·可以充分利用cpu的资源。
·可以充分迅速的响应用户的请求时间。
·可以进行模块化和异步化的处理。


2.使用多线程的风险?
a.安全性问题:多个线程共享资源,存在冲突,产生与期望不相符的结果
b.死锁等问题
c.性能问题:线程数太多,cpu频繁切换,在调度上花费的时间太长;占用太多资源,消耗过多内存;容易导致服务器宕机