“高并发和多线程”总是被一起提起,给人感觉两者好像相等,那它们之间究竟有什么区别呢

java cpu 多核不生效 java多线程多核_高并发

1.多线程

多线程是java的特性,也是java架构师必须掌握的一项技术,因为现在cpu都是多核多线程的,可以同时执行多个任务。为了提高JVM的执行效率,Java提供了这种多线程机制来提高数据处理的效率。多线程对应于cpu,高并发对应于访问请求。单个线程可用于处理所有访问请求,或者多个线程可用于同时处理访问请求。

在过去的单个CPU时代,单个任务一次只能执行一个程序。后来,它发展到多任务处理阶段,其中计算机可以同时并行执行多个任务或进程。尽管这不是真正的“同一时间点”,但是多个任务或进程共享一个CPU,并且使用操作系统来完成多个任务之间的CPU切换,以使得每个任务都有机会获得一定的时间片运行。

后来发展为多线程技术,该技术使多个线程可以在程序中并行执行。线程的执行可以被视为执行程序的CPU。当程序在多个线程中运行时,就好像有多个CPU在同时执行该程序。

总之,多线程即可以这么理解:多线程是处理高并发的一种编程方法,即并发需要用多线程实现。

2.高并发

高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。

典型的场景,例如:12306抢火车票,天猫双十一秒杀活动等。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。

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