美文网首页
线程与并发

线程与并发

作者: 生不悔改 | 来源:发表于2020-04-05 18:18 被阅读0次

进程与线程

进程与线程的关系可以参考图一。

进程

程序是由指令和数据组成的,但这些指令需要运行,数据要读写,就需要将指令加载至CPU,数据加载到内存。再指令运行的过程中还需要用到磁盘网络等设备,进程就是用来加载指令、管理内存,管理IO的。当一个程序被运行时,从磁盘加载这个程序至内存,这时候就开启了一个进程。进程就可以视为一个程序的实例,大多数程序可以运行多个实例进程(例如:浏览器),也有的程序只能开启一个实例进程(例如:网易云音乐)。

线程

一个进程里面可以包含一至多个线程,一个线程是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU去执行。java中线程是最小的调度单位,进程是资源分配的最小单位。在windows中进程是不活动的,只是作为线程的容器。

二者对比

1.进程基本是相互独立的,而线程存在与进程中,是进程的一个子集。

2.进程拥有共享的资源,如内存空间,供其内部线程共享。

3.不同的计算机之间的进程通信,是通过网络的,需要遵守相同的协议如HTTP协议。

4.线程通信比较简单,因为它们共享进程中的内存,比如多线程同时对同一个共享变量经行操作。

5.线程更轻量化,它的上下文切换成本一般要比进程小很多。

图一

并发与并行

并发

同一时间,同一个进程完成多件事情的能力我们称为并发。

在线程中,多个线程操作同一个共享资源(读写数据等等)我们也可以称为并发。

并发

并行

同一时间,多个进程完成多件事情的能力我们成为并行。

并行

当我们使用单核CPU电脑的时候,我们在桌面打开音乐听歌的同时,还在打着游戏,这时就是并发执行两个线程,一个音乐线程,一个游戏线程,只是由于操作系统中有一个时间调度器,会一直切换调度执行的线程,由于花费的时间很短,宏观上我们感觉是在同时运行,微观上是在不断的切换线程执行指令。所以电脑的CPU核心越高,一般后台处理事务的能力越强。如果是单核CPU电脑,当你开启的应用很多的时候,电脑就会卡顿,这就是由于调度器切换进程的时候会花费时间,切换的越多,越频繁,就能越直观的感受到这种卡顿。

相关文章

网友评论

      本文标题:线程与并发

      本文链接:https://www.haomeiwen.com/subject/faouphtx.html