多线程
讲到多线程,就需要说一下多线程的作用是干什么的。
优点:解决了多部分同时运行的问题。
这个问题知乎大神解释的很清楚,我就不再多说。
多线程有什么用? - pansz的回答
进程和线程
进程:每个进程都有独立的代码和数据空间(数据上下文),进程之间切换会有较大的开销。
线程:进程中的一个负责执行的控制单元或者说是执行路径。同一进程下的线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC) ,线程切换开销小。
当运行一个应用程序时,程序及所需数据被调入内查询,程序被CPU调度备执行,就启动了一个进程或多个线程。启动进程的时候,操作系统会为自己的进程分配内存和CPU等资源。
线程是程序中一个单一的顺序控制流程。每个进程至少有一个线程在执行自己的地址空间中的代码。线程是进程内部执行的路径。每个进程都可以包含多个线程,它们可以同时独立的执行进程的地址空间中的代码。进程的所有线程共享进程的地址空间。在基于线程的多任务处理环境中,线程是最小的执行单位。
通俗的来讲;你打开QQ,开了一个进程。打开网易云音乐,又开了一个进程。
在QQ这个进程中,你和你朋友语音聊天,传输语音开了一个线程,这时,隔壁老王有发给你一个消息,你打开弹出对话框又是一个线程。
即一个进程有多个线程。
下面再拿我自己电脑的资源监视图来说明这个问题。
表中每一行都是一个进程,每一个进程对应一个或多个线程数。
那到这里我们概括一下进程和线程的关系。
一个进程中有多个或一个线程。
进程负责分配空间,线程负责执行子任务。
进程是资源分配的最小单位,线程是CPU调度的最小单位。
多进程是操作系统能同时运行多个任务(程序),多线程是指同一程序中有多个顺序流在执行。
真的是同时执行吗?
答案当然是No,它们受CPU控制,在某一时刻,只有一个程序在执行,确切来说,是一个执行路径在执行,cpu在这些执行路径之间切换处理,速度非常快,以至于我们认为她们是同时进行的。
线程生命周期
线程和进程都分为五个阶段:创建、就绪、运行、等待、休眠、堵塞、终止。
创建: 线程被创建
就绪: 线程做好了运行准备并在等待CPU
运行: 线程在CPU上执行。
等待: 线程在等待发生某个事件。例如用户输入输出。
休眠: 线程已被告知要休眠一段时间
堵塞: 线程在等待I/O结束
终止: 线程被终止。