要掌握多线程,必须分清楚进程和线程
进程【process】,是指计算机中已运行的程序,用户下达运行程序的命令后,就会产生进程。同一程序可产生多个进程(一对多关系),以允许同时有多位用户运行同一程序,却不会相冲突。(来自维基百科)
例如,你可以同时登陆两个甚至多个QQ号,这就是同一程序产生了多个进程的例子。
线程【thread】是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在【进程】之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。(来自维基百科)
例如,在Java中,我们启动main方法就是启动了一个JVM进程,而main方法所在的线程就是主线程,在main方法中我们可以启动多个线程来做不同的事情。
操作系统将资源分配给进程,但是CPU资源比较特殊,它是分配给线程的,也就是说线程才是真正占用CPU资源的东西,可以说线程是使用CPU资源的基本单位。
我们需要了解【轮询】的概念,轮询【Polling】是一种CPU决策如何提供周边设备服务的方式,又称【程控输入输出】(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
时间片【timeslice】是分时操作系统分配给每个正在运行的线程微观上的一段CPU时间,是从线程开始运行直到被抢占的时间。时间片通常很短(在Linux上为5ms-800ms),用户不会感觉到。
网友评论