高并发和多线程的区别在哪里?都有什么概念?

TheDisguiser 2020-05-08 16:59:40 java常见问答 9435

高并发大家知道吗?它总是被和多线程一起提起,但其实它与多线程是完全不相同的噢,小伙伴们知道高并发与多线程的区别在哪里吗?他们又有什么概念呢?跟小编一起看看吧。

概念

高并发

高并发(High Concurrency)是一种在系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,一般会发生在web系统集中大量访问收到大量请求。高并发的发生会导致系统在这段时间内执行大量操作,例如对资源的请求、数据库的操作等。

高并发的一些常用指标有:

1、响应时间(Response Time)

响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间

2、吞吐量(Throughput)

吞吐量:单位时间内系统处理的请求数量。

3、每秒查询率QPS(Query Per Second)

QPS:每秒钟系统响应的请求数。

4、并发用户数

并发用户数:同时承载正常使用系统功能的用户数量。像是微信,同时在线量一定程度上代表了系统的并发用户数。

多线程

线程是一种操作系统中进行运算调度的最小单位;它包含在进程中,是进程的实际运作单位。

多线程,是指从软件或硬件上实现了多个线程并发执行的技术。能够具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,从而提升整体性能。

一般的说,线程是程序中一个单一的顺序控制流程;而多线程就是在这单个程序中同时运行多个线程来完成不同的工作。

多线程的意义是为了同时完成多项任务,不在乎运行效率是否提高,是为了提高资源使用效率从而来提高系统的效率。多线程是在同一时间需要完成多项任务的时候实现的。

高并发与多线程之间关系区别

别看多线程与高并发总是一起被提起,但它们区别还是蛮大的。

多线程

多线程总的来说就是Java的特性,现在的cpu都是多核多线程,可以同时执行多个任务,所以为了提高jvm的执行效率,Java就提供了这种多线程的机制,用来增强数据处理效率。多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。

以前的单CPU时代时,一个任务在同一时间点只能执行一个程序。后来到了多任务阶段,计算机支持在同一时间点并发执行多任务或多进程。但这其实并不是真正意义上的“同一时间点”,而是多个任务进程之间共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,从而让所有任务都有机会获得一定的时间片运行。

发展到多线程技术,一个程序在内部就能拥有多个线程并行执行了。其实,一个线程的执行可以被认为是一个CPU在执行该程序。当一个程序运行在多线程下,就好像有多个CPU在同时执行该程序。

结:、多线程其实就是处理高并发的一种编程方法,即并发需要用多线程实现。

高并发

高并发并不是java独有的技术,是无关语言的广义的,为提供更好互联网服务而提出的概念。典型的场景,例如:12306抢火车票,天猫双十一秒杀活动等。这种情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理的不到位,不仅会因为请求响应时间的原因降低用户体验,还可能同时导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。

如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化等……而多线程只是其中解决方法之一。

以上就是高并发与多线程之间区别的所有内容了,更多java常见问答相关内容请一直关注我们了解详情吧。

推荐阅读:

高并发服务器构架SEDA是什么?有什么特点?

高并发java实现方式有哪些?该怎么实现?

高并发开发原理是什么?如何理解?