Java并发编程之并发与并行

什么是并发?

并发的概念:两个或多个任务在重叠的时间段内运行和完成
并发的特点:只利用一个处理器,只是因为处理器处理速度很快,所以看起来像同时运行,但这只是逻辑上的同时运行,在物理层面还是串行。
在这里插入图片描述

什么是并行?

并行的概念:两个或多个任务在同一时刻开始运行和完成
并行的特点:利用多个处理器同时进行处理,是物理上的同时运行。比如说,在多核处理器上,有两个线程同时执行同一段代码,而单核处理器无法执行并行。所以,并行一定是并发。
在这里插入图片描述

为什么会出现并发和并行?

  • 并发的出现:CPU处理速度很快,但是每个CPU同一时刻只能执行一个指令,所以操作系统开发出新的技术,让不同的进程和线程用时间片的方式,即抢占式的方式执行任务,这样操作系统能更好的调用它们,让用户觉得程序在同时运行。
  • 并行的出现:随着CPU的发展,诞生了多核,操作系统可以自动的检测CPU核心的数量,这一层都是操作系统来完成,用户无法感知,也就是说怎么把一个任务分配到哪个核心用户是不知道的,如果所有的核心都已经被占用,操作系统也可以实行抢占式的方式把它认为优先级更高的进程和线程优先执行。

什么是高并发?

  • 高并发的概念:同时有很多请求发给服务器,服务器并行处理,比如双十一和微信抢红包就是典型的高并发场景。

高并发和多线程的联系和不同?

  • 高并发是指有大量的请求同时到达服务器所带来的结果,需要服务器同时去处理这些请求,所以高并发是一种状态。
  • 多线程并不意味着高并发,它是一种解决方案,防止高并发带来的性能和安全问题。
  • 多线程可以提高硬件的利用率,比如Tomcat为了处理多个请求,内部采用了多线程的模型。
  • 多线程和高并发的关系:多线程是应对高并发这种状态的一种重要的解决方案
  • 高并发不一定要多线程来解决,比如要解决很多用户同时访问数据库,数据库承受不了这些压力,那可以在数据库上面加一层Redis缓存层,这也是一种应对高并发的一种方法

高并发有哪些指标?

  • QPS(Queries Per Second)每秒查询数,引申为每秒请求数
  • 带宽
  • PV(Page View)一天内的页面浏览量
  • UV(Unique Visitor)一天内访问该页面的用户数量
  • IP和UV的区别:IP变了,但是Cookie没变,即用户没变;IP没变,但是Cookie变了,即用户变了。所以这是两个不同的指标。
  • 并发连接数,服务器接收请求的数目
  • 服务器平均请求等待时间,服务器处理一个请求所花的时间
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章