还有人以为高并发=多线程吗?跟着大佬带你了解二者关系与区别,面试难题轻松拿下!

news/2024/5/9 8:51:54/文章来源:https://blog.csdn.net/LBWNB_Java/article/details/128011555

高并发和多线程的关系

“高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则高并发≠多线程

多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。

高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况、天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化……而多线程只是其中解决方法之一。

实现高并发需要考虑:

系统的架构设计,如何在架构层面减少不必要的处理(网络请求、数据库操作等)
网络拓扑优化减少网络请求时间、如何设计拓扑结构、分布式如何实现?
系统代码级别的代码优化,使用什么设计模式来进行工作?哪些类需要使用单例?哪些需要尽量减少new操作?
提高代码层面的运行效率、如何选取合适的数据结构来进行数据存取?如何设计合适的算法?
任务执行方式级别的同异步操作,在哪里使用同步?哪里使用异步?
数据库优化减少查询修改时间。数据库的选取?数据库引擎的选取?数据库表结构的设计?数据库索引、触发器等设计?是否使用读写分离?还是需要考虑使用数据仓库?
缓存数据库的使用?如何选择缓存数据库?是redis还是memcache?如何设计缓存机制?
数据通信问题,如何选择通信方式?是使用TCP还是UDP?是使用长连接还是短连接?NIO还是BIO?netty、mina还是原生socket?
操作系统选取,使用winserver还是linuc?或者unix?
硬件配置?是8G内存还是32G,网卡10G还是1G?
……
……
以上的这些问题在高并发中都是必须深入考虑的,就像木桶原理一样,只要其中的某一方面没有考虑到,都会造成系统瓶颈,影响整个系统的运行。而高并发问题不仅仅涉及面广,同时又要求有足够的深度!

而多线程在这里只是在同/异步角度解决高并发问题的其中的一个手段,是在同一时刻利用计算机闲置资源的一种方式。

多线程在解决高并发问题中所起到的作用就是使计算机的资源在每一时刻都能达到最大的利用率,不至于浪费计算机资源使其闲置。

高并发系统,多线程涉及到大量的概念和知识点,如果没有系统的学习,很容易会杂糅概念而辨识不清,在面试与实际工作中都会遇到困难。这些知识点,可以按照以下的多线程高并发的文档以及知识体系导图系统性的学习,如需要参照进行学习可以三连支持一下

整份文档共九个章节

第一节:线程的基本概念

多线程与高并发大概讲六大块,

  • 第一:基本的概念,从什么是线程开始
  • 第二:JUC同步工具,就是各种同步锁态
  • 第三:同步容器
  • 第四:线程池
  • 第五:高频面试加分项的- -些面试用的东西,包括线程
  • 第六: Disruptor ,不知道有多少同学听说过这个框架的,这个框架它也是一个MQ框架( Message Queue )叫做消息队列,消息队列非常多,后面还会给大家讲Kafka、RabbitMQ ,Redis等这些都是消息队列。Disruptor是目前大家公认的在单机环境上效率最高的、性能最快的MQ.

第二节: volatile与CAS

  • volatile
  • CAS

第三节: Atomic类和线程同步新机制

一个Atomic的问题 ,然后开始讲除synchronized之外的别的锁。

第四节: LockSupport. 淘宝面试题与源码阅读方法论

本章我们补一个小漏洞,它叫LockSupport ,然后我们分析两道面试题,紧接着我会教大家阅读源码的技巧,源码层出不穷,生生不息,掌握了源码的阅读技巧,大家培养出了阅读源码兴趣的时候,之后好多代码,你需要自己去抠,抠出来才是你自己的,最后我们会分析AQS源码

第五节: AQS源码阅读与强软弱虚4种引用以及ThreadLocal原理与源码

今天咱们继续讲AQS的源码,在上节课我教大家怎么阅读AQS源码,跑不起来的不读、解决问题就好。目的性一条线索到底、无关细节略过,读源码的时候应该先读骨架,比如拿AQS来说,你需要了解AQS是这么一个数据结构,你读源码的时候读起来就会好很多

第六节:并发容器

第七节:线程池

这道面试题呢实际上是华为的一道面试题,其实它里面是一道填空题,后来就很多的开始考这道题,这个面试题是两个线程。第一个线程是从1到26, 第二个线程是从A到一直到Z ,然后要让这两个线程做到同时运行,交替输出。顺序打印。那么这道题目的解法有非常多。

第八节:线程池与源码阅读

  • 线程池worker任务单元
  • 核心线程执行逻辑-runworker

第九节: JMH与Disruptor

  • JMH Java准测试工具套件
  • 什么是JMH
  • 创建JMH测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_224890.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 10.0 11.0 12.0 启动模拟器教程

Android 10.0 11.0 12.0 启动模拟器教程 一、android 12.0 模拟器二、创建模拟器设备三、创建删除路经文件夹avd和配置环境变量四、启动模拟器一、android 12.0 模拟器 Android 10.0 11.0 12.0 启动模拟器都行,我选择android 12.0 模拟器 二、创建模拟器设备 第一步骤:在 …

推荐一个基于Springboot + Vue 开发的前后端分离博客

基于Springboot Vue 开发的前后端分离博客 博客介绍 本博客是参考 [风丶宇] 大佬的博客更新而成,感谢大佬提供的页面,然后定制新增部分功能,是个非常值得新手入门学习的Java规范化编程案例! 在线地址 项目链接: h…

JVM 中类加载的链接与初始化

类加载系统,主要有以下部分 加载链接 验证准备解析初始化 它们每部分都做些什么事情呢? 加载 (2条消息) JVM 双亲委派模型_兜兜转转m的博客-CSDN博客 链接 链接-验证 一般验证部分,IDEA已经帮我们规范了。 验证是连接阶段的第一步&…

数据结构和常用排序算法复杂度

1.顺序表 插入操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数n/2 删除操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数(n-1)/2 按值查找时间复杂度 最好O(1),最坏O(n),平…

JVM垃圾回收——CMS垃圾收集器

目录 一、什么是CMS垃圾收集器 二、CMS垃圾收集的过程 三、CMS收集器的不足 四、CMS收集器的参数配置 一、什么是CMS垃圾收集器 虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数,但是考虑到还有很多开发是基于jdk8开发的,所以还是有必要了解…

数据结构-难点突破(C++实现并查集+路径优化,详解哈夫曼编码树)

文章目录1. 并查集2. 哈夫曼编码树1. 并查集 并查集是一个多棵树的集合(森林)。 并查集由多个集合构成,每一个集合就是一颗树。 并:合并多个集合。查:判断两个值是否再一个集合中。 每棵树存在数组中,使…

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

又到了四年一度的球迷狂欢节,本次卡塔尔世界杯已于11月21号举行。 每当世界杯来临,与世界杯相关产业都会迎来一波爆发,毕竟这个千亿美金市值的市场暗藏着无数的机会。而自GameFi的火热开始,世界杯也成为了加密投资者的狂欢日&…

pytorch的buffer学习整理

pytorch模型中的buffer 这段时间忙于做项目,但是在项目中一直在模型构建中遇到buffer数据,所以花点时间整理下模型中的parameter和buffer数据的区别💕 1.torch.nn.Module.named_buffers(prefix‘‘, recurseTrue) 贴上pytorch官网对其的说…

分布式文件系统HDFS实践及原理详解part3

HDFS原理 说明:3.5开头目录是因为和上篇文章内容同属一章,所以开头使用了3.5 3.5 HDFS核心设计 3.5.1 心跳机制 1、 Hadoop 是 Master/Slave 结构,Master 中有 NameNode 和 ResourceManager,Slave 中有 Datanode 和 NodeManag…

异构网络小入

A Survey of Heterogeneous Information Network Analysis Heterogeneous Graph Attention Network 异构网络很火吗? 在一个网络中,不用节点的类型不同,这是肯定的。 所以,异构网络在表征比较复杂的情形时,是比较合适…

基于图像识别的小车智能寻迹控制系统

目录 摘要…… I Abstract II 基于图像识别的智能寻迹控制系统设计 I Design of Intelligent tracking Control system based on Image recognition II 目录 III 第1章 绪论 1 1.1 课题背景 1 1.1 国内外文献综述 1 1.2 论文研究内容 2 第2章 基于图像识别的智能寻迹控制系统方…

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

大家好,我是小政。好久没有更新文章,近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。 联想拯救者Y9000P关于安装Ubuntu未找到WIFI适配器的解决方法1.Ubuntu18.042.网卡信息3.解决方法(1)用手机USB连接电脑提供网…

动态规划--树型dp

6个题1. 树的最长路径2.树的中点.由于第三题需要用到一些数学地知识,所以先去补一补数学知识。连接链接在这里4.二叉苹果树5.战略游戏6.皇宫守卫1. 树的最长路径 定义:树中两个点直接的最远距离称为树的直径 先说一个结论 先任意找到一个树中一个点u&am…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识,高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper? Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…

大学生静态HTML网页设计--公司官网首页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&#xf…

SpringIoc依赖查找-5

1. 依赖查找的今世前生: Spring IoC容器从Java标准中学到了什么? 单一类型依赖查找 JNDI - javax.naming.Context#lookup(javax.naming.Name) JavaBeans - java.beans.beancontext.BeanContext 集合类型依赖查找 java.beans.beancontext.BeanContext 集合查找方法 层…

sqli-labs/Less-51

这一关的欢迎界面依然是以sort作为注入点 我们首先来判断一下是否为数字型注入 输入如下 sortrand() 对尝试几次 发现页面并没有发生变化 说明这道题的注入类型属于字符型 然后尝试输入以下内容 sort1 报错了 报错信息如下 我们从报错信息可以知道这道题的注入类型属于单…

期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

#边学边考 必修5 高项:对人管理 第2章 项目沟通管理和干系人管理

答题报告 自我分析 有可能是间隔时间太长,本章节从开始学习到今天(11.24)学完,中间至少停止了1周以上,造成对基本知识记忆不牢固。对重点知识没有重点记忆,走马观花,以至于混淆。 答题解析 关…

MySQL 进阶 图文详解InnoDB储存引擎

前言 SQL 语句的最终执行者是存储引擎。存储引擎在经解析器、优化器处理后被执行器调用其接口执行优化后的执行计划。MySQL 存储引擎包括 InnoDB、Myisam、Memory、Archive、CSV 存储引擎等,其中最常用也是MySQL 默认的存储引擎是 InnoDB。 写入缓冲池(…