多线程和高并发介绍_多线程与高并发-程序员宅基地

技术标签: 多线程与高并发  

多线程和高并发介绍


前言

本文主要是针对多线程和高并发的概念做了简单的描述,介绍了什么是多线程,什么是高并发,并且对多线程和高并发的关系做了比较描述。

一、什么是多线程?

1.多线程介绍

什么是多线程,首先看下百度百科对多线程的定义;多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

2.多线程实现原理?

实现多线程是采用一种并发执行机制。 并发执行机制原理: 简单地说就是把一个处理器划分为若干个短的时间片,每个时间片依次轮流地执行处理各个应用程序,由于一个时间片很短,相对于一个应用程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果 。 多线程就是把操作系统中的这种并发执行机制原理运用在一个程序中,把一个程序划分为若干个子任务,多个子任务并发执行,每一个任务就是一个线程。这就是多线程程序。

3.白话文解释多线程

举个例子,我们打开腾讯管家,腾讯管家本身就是一个程序,也就是说它就是一个进程,它里面有很多的功能,我们可以看下图,能查杀病毒、清理垃圾、电脑加速等众多功能。 按照单线程来说,无论你想要清理垃圾、还是要病毒查杀,那么你必须先做完其中的一件事,才能做下一件事,这里面是有一个执行顺序的。 如果是多线程的话,我们其实在清理垃圾的时候,还可以进行查杀病毒、电脑加速等等其他的操作,这个是严格意义上的同一时刻发生的,没有执行上的先后顺序。

4.多线程存在的问题

1.多线程存在线程安全问 2.死锁问题

二、什么是高并发?

1.高并发介绍

首先看下百度百科对高并发的定义;高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。

2.如何提升系统的并发能力

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。 互联网分层架构中,各层次水平扩展的实践又有所不同: (1)反向代理层可以通过“DNS轮询”的方式来进行水平扩展; (2)站点层可以通过nginx来进行水平扩展; (3)服务层可以通过服务连接池来进行水平扩展; (4)数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展; 各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限

三、多线程和高并发

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

总结

本文主要是针对多线程和高并发的概念做了简单的描述,介绍了什么是多线程,什么是高并发,并且对多线程和高并发的关系做了比较描述。下一节主要针对如何保证多线程的线程安全,如何防止死锁以及synchronized关键字的使用进行讲解。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_15127715/article/details/117613830

智能推荐

如果非要回到古代,我会选择春秋战国-程序员宅基地

文章浏览阅读2.4k次。以史为鉴,可以知兴替|第103篇1.“矮大紧”高晓松曾说:“作为知识分子,如果非要我回到古代,我会选择春秋战国,其次是唐宋。”我不知道自己算不算得上是知识分子,假如让我...

Java-序列化serialVersionUID不一致处理_java序列化时对象属性不一致报错怎么办-程序员宅基地

文章浏览阅读2k次。文章目录背景serialVersionUID不一致的兼容处理背景Java Object Serialization 会使用对象中的serialVersionUID私有静态常量长整型属性(private static final long)作为该对象的版本号,反序列化时 JVM 会校验该版本号是否和序列化时的一致,如果不一致会导致序列化失败,抛出InvalidClassException异常。默认情况下,JVM 为每一个实现了Serializable的接口的类生成一个serialVersionUID,_java序列化时对象属性不一致报错怎么办

卸载 流程_IE11卸载发生错误没有成功卸载全部更新解决方法-程序员宅基地

文章浏览阅读1w次。有很多Win7系统用户把IE浏览器升级到IE11浏览器,但是发现并不好用,或是和一些工作不兼容,想要卸载回到原来老版本的IE浏览器,可是在卸载的时候出现:发生错误,没有成功卸载全部更新,也就是说卸载失败了,那么遇到这样的情况时要怎么才能卸载呢?一起来看看小编亲测可用的解决方法。修复步骤如下:操作流程:可以先进入【C:WindowsTEMP】文件夹清空;然后以管理员身份进入【命令行提示符】;输入代码..._ie浏览器降低版本卸载失败

html纵向表头,html固定表头,表单内容垂直循环滚动-程序员宅基地

文章浏览阅读84次。Bootstrap 101 Template.content {width: 500px;margin: 50px 50px;}.header {line-height: 50px;background-color: #ECECEC;}.data {height: 300px;overflow: hidden;}姓名性别年龄职业var html = '';for(var i = 0; i <..._原生html for循环 纵向表头

Python常见报错_int' object has no attribute '__getitem__-程序员宅基地

文章浏览阅读2.3k次。1.IndexError: tuple index out of range错误的原因是元组索引越界,因为后面format中的内容出现了赋值操作2.TypeError: ‘int’ object has no attribute ‘getitem’会出现报错:在python2中,input输入数字得到的就是int类型的数字,数字是不可以做下标取值,而python3中input输入都为字符串,而字符串可以下标索引3.SyntaxError: ‘break’ outside loop原因:bre_int' object has no attribute '__getitem__

Java程序设计清考_面向对象程序设计(Java)-题库-程序员宅基地

文章浏览阅读951次。《面向对象程序设计(Java)-题库》由会员分享,可在线阅读,更多相关《面向对象程序设计(Java)-题库(33页珍藏版)》请在金锄头文库上搜索。1、面向对象程序设计 (java)题库抽题规范:(1) 此题库共 75 道题,抽 8 道作为期末考试题。其中,易 8 道,较易 33 道,较难18 道,难 16 道.(2) 按题型,第一大题抽 4 道,每道 10 分;第二大题抽 2 道,每道 10 分;..._用java实现类继承,完成如下要求:(1)设计一个表示二维平面上点的类 point,包含

随便推点

Nacos数据库配置_nacos配置数据库-程序员宅基地

文章浏览阅读1.5w次。深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。_nacos配置数据库

SIwave电源阻抗(PDN)分析。_siwave pdn仿真-程序员宅基地

文章浏览阅读1.3k次,点赞3次,收藏16次。Z阻抗只看PDN的时候,只需要关注自阻抗就好了。名字一样的是自阻抗,VRM到后面是传输阻抗,_siwave pdn仿真

Linux中禁用ctrl alt del快捷键重启_linx 关闭 ctrl alt del-程序员宅基地

文章浏览阅读363次,点赞7次,收藏8次。【代码】Linux中禁用ctrl alt del快捷键重启。_linx 关闭 ctrl alt del

Vue.js动态获取浏览器高度、宽度并进行实时修改DOM元素高度_vue3 dom元素获取距离浏览器工具栏的高度-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏7次。需求:项目中有高度、宽度自适应需求,需要适应不同分辨率的高度及宽度,在不同分辨率下效果区别不会很大html代码如下:<template> <div id="home"> <div class="head" > <v-head></v-head> </div&..._vue3 dom元素获取距离浏览器工具栏的高度

在SpringBoot中使用Spring Security实现权限控制_spring-security配置允许访问ip-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏6次。以前在Spring框架中使用Spring Security需要我们进行大量的XML配置,但是,Spring Boot在这里依然有惊喜带给我们,我们今天就一起来看看。 毫无疑问,Spring Boot针对Spring Security也提供了自动配置的功能,这些默认的自动配置极大的简化了我们的开发工作,我们今天就来看看这个吧。创建Project并添加相关依赖 配置applicat..._spring-security配置允许访问ip

vmware16,vmware17虚拟机安装以及序列号备份,安装win11,进入启动界面闪退_vm17pro密钥许可证-程序员宅基地

文章浏览阅读737次,点赞9次,收藏8次。检测到hyper-v 时,勾选自动安装。_vm17pro密钥许可证