线程和进程
进程:指在系统中正在运行的一个应用程序(但是现在也有很多应用软件是多进程的);程序一旦运行就是进程;或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。
进程——资源分配的最小单位,线程——程序执行的最小单位。
线程调度
1、分时调度
所有线程轮流使用CPU使用权,平均分配每个线程使用CPU的时间
2、抢占式调度
优先让优先级高的线程使用,如果线程的优先级一样则随机分配。Java就是使用这种模式
CPU使用抢占式调度一般是高速运行,所以对于人而言并不能感受到切换的区别,造成一种所有线程都一起运行的假象。多线程不能提高程序的运行速度,但是可以提高效率。比如输入这个线程,它需要等。如果你在等待输入的时候可以切换线程让其他线程先跑,那么就提高了效率。但是因为处理时间和等待输入的时间都是固定的,所以并没有提升速度。
同步和异步
同步:排队执行 , 效率低但是安全.
异步:同时执行 , 效率高但是数据不一定安全.
并发和并行
并发:指两个或多个事件在同一个时间段内发生。
一般我们说并发会说 一天内的并发量,一小时内的并发量,一秒内的并发量。会特地规定一个单位时间。
并行:指两个或多个事件在同一时刻发生(同时发生)。
而并行就指的是同时发生。比如现在有三个程序/进程/线程并行,就是说当前有三个程序一起在跑。