Java并发和并行的区别

并发和并行从宏观上来说都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。web

在操做系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不一样CPU上同时执行。服务器

并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,由于cpu要在多个程序间切换)运行多个程序。网络

------------------------------------------------------------------并发

并行,是每一个cpu运行一个程序。socket

打个比方。并发,就像一我的(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2我的喂2个孩子,两个孩子也同时在吃饭。网站

①程序与计算再也不一一对应,一个程序副本能够有多个计算
②并发程序之间有相互制约关系,直接制约体现为一个程序须要另外一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。
③并发程序在执行中是走走停停,断续推动的。操作系统

在网络服务器上,并发是指同一时刻能处理的链接数,好比,服务器能创建1000个TCP链接,即服务器同时维护了1000个socket,这个服务器的并发量就是1000,可是服务器可能只有单核或者8核,16核等,总之对这1000个socket链接的处理也是分时来作的。每一个socket服务器处理的时间若是是1s,那么该服务器1s内能够处理完1000个请求,若是每一个socket处理100ms的话,那么该服务器1s内能够处理10000个请求。



在这里咱们先抛出一些概念,若是这些概念都弄清楚了,并发和并行基本就清楚了。

会话:在咱们用电脑工做时,打开的一个窗口或一个Web页面,咱们能够把它叫作一个“会话”,扩展到web服务器上,要维护不少个用户的web页面访问,咱们能够认为服务器管理了多个“会话”。

并发链接数:网站有时候报错:“HTTP Error 503. The service is unavailable”。但刷一两下又正常,估计极可能是超过网站的最大并发链接数了。并发链接指网络流量管理设备或代理服务器对其业务信息流的处理能力,是可以同时处理的点对点链接的最大数目,它反映出设备对多个链接的访问控制能力和链接状态跟踪能力,这个参数的大小直接影响到设备所能支持的最大信息点数。

并发能够理解为服务器最多维护多少个会话数,并行则不同,它关系的是有多少个会话是在同时进行,假若有两台服务器(进程),可能并行的数量是2,而并发的数量是1000。

单核cpu的话只能是并发,多核cpu才能作到并行执行
相关文章
相关标签/搜索