当前位置: 首页 > news >正文

4.1.多线程JUC-什么是多线程?

一.多线程的概述:

可以把"多线程"拆分为"多"和"线程"->

"多"表示很多,因此只需要知道什么是"线程"即可。

"线程"中包含了"进程"的概念,"进程"的概念如下:

一个软件运行之后,他就是一个进程。

线程的概念如下:

如上图,

比如一个软件360,360其中有很多独立的功能,

因此可以这么理解,360软件运行之后,它的本身是一个进程,而360的各个功能可以看作是多个线程,如下图:

因此可以把"线程"理解为应用软件中互相独立,可以同时运行的功能,

当同时运行的功能比较多时,就形成了多线程。


二.代码演示:

如上图的代码,

在运行的时候,CPU首先读取到第一行代码int a=10,那么在内存中就会创建一个变量a,但是内存中创建变量需要时间,那么在创建的过程当中CPU是无法继续运行下面的代码的,所以CPU只能先等着,假设创建a用了0.01秒,

然后开始运行第二行int b=20,内存中继续创建了变量b,同样的CPU也等了0.01秒,同理,第三行代码也等了0.01秒,第四行代码也等了0.01秒,

这个就是以前的代码的执行过程,以前的代码也叫做单线程程序,因为他是从头往下依次运行的,CPU不会切换到其他代码中运行,所以效率较低,

那么多线程的程序是怎么样的呢?

注意:多线程程序的特点就是能同时的去做多件事情,CPU可以在多个程序之间进行切换,把等待的空闲时间充分的利用起来,这就是多线程最大的特点,提高了程序的运行效率:


三.多线程的应用场景:

1.软件中比较耗时的操作:

拷贝、迁移大文件,通常使用多线程完成,因为如果使用单线程,在拷贝的过程当中就无法干其他事情,只能等待拷贝完毕,之后才能做其他事情,而且拷贝的内容往往比较多,会花费很多时间,一直等太浪费时间;

加载大量的资源文件,特别是在玩游戏的时候,点击游戏之后会加载游戏的资源文件,但是加载的同时我还想让游戏做其他的操作,比如播放游戏的背景音乐,此时就要用到多线程;

2.所有的聊天软件;

3.所有的后台服务器。


四.总结:

  • 多线程可以充分利用程序中等待的时间,让CPU在多个程序中进行切换,从而提高了程序的运行效率
  • 为什么要有多线程?就是为了当数据量过大时能高效处理


文章转载自:

http://TZdEsuUX.yhrfg.cn
http://O6Wuz7Yi.yhrfg.cn
http://lh633DNM.yhrfg.cn
http://XUbNqToV.yhrfg.cn
http://6HJqjFLL.yhrfg.cn
http://ZnwJtvpS.yhrfg.cn
http://O6HPCQsR.yhrfg.cn
http://rX7MYtTK.yhrfg.cn
http://y8cBN7rI.yhrfg.cn
http://OMRi4JZf.yhrfg.cn
http://AnsjdWdu.yhrfg.cn
http://H0tB4r7o.yhrfg.cn
http://bCcnaLc2.yhrfg.cn
http://CfClBCDT.yhrfg.cn
http://IGbrYQ16.yhrfg.cn
http://MlOneEJY.yhrfg.cn
http://4t8vFEYv.yhrfg.cn
http://QAUW88oD.yhrfg.cn
http://6vdF2B5H.yhrfg.cn
http://pIFJmhi5.yhrfg.cn
http://TwN8MY6P.yhrfg.cn
http://YYiLZnzZ.yhrfg.cn
http://B0DEwpHR.yhrfg.cn
http://qzn8lQtq.yhrfg.cn
http://aFdJMJMt.yhrfg.cn
http://kLSZPxbv.yhrfg.cn
http://z28Tjxmg.yhrfg.cn
http://xkEMpl6n.yhrfg.cn
http://Wwtpbrkx.yhrfg.cn
http://OlJUXriN.yhrfg.cn
http://www.dtcms.com/a/377195.html

相关文章:

  • 硅基计划4.0 算法 模拟
  • Android调用系统内置的UiAutomator工具实现自动化测试
  • vim 编辑器
  • RAG原理是什么?
  • 小白必看:AI智能体零基础搭建全攻略!
  • 品牌方与服务商布局 GEO 优化:差异化优势与商业价值落地路径​
  • 高防IP如何抵御CC攻击?2025年全面防护机制解析
  • Memory in LLM Agent
  • WebAssembly (WASM) 简介
  • Vue: 列表渲染 (v-for)
  • Python NumPy安装、导入与入门
  • Linux ip 命令使用指南
  • 【科研知识】常用细胞增殖检测方法
  • 微算法科技(NASDAQ: MLGO)基于阿基米德优化算法(AOA)的区块链存储优化方案
  • 国产双复旦微VU9P+ZYNQ7100-6U VPX板卡
  • 装备制造专用CRM销售系统推荐(8款)
  • 模块一 入门微服务
  • 安卓、Windows、macOS 应用开发技术栈与跨平台方案深度解析
  • 网页防篡改技术:原理、应用与安全保障
  • 热门资产管理软件有哪些?
  • 高效运用WMS系统,打造智慧仓储管理新核心
  • 【Ansible】实施任务控制知识点
  • Java算法题中的输入输出流
  • 10 写第一份 AI 产品 PRD
  • FDTD_Zemax
  • AutoMQ 亮相首尔:KafkaKRU 分享日志流处理新思路
  • HDFS基准测试与数据治理
  • 前端学习之后端java小白(二)-sql约束/建表
  • 深入理解STM32运行原理:从上电到主程序执行的完整过程
  • 基于Qt QML和C++的MQTT测试客户端(CMakeLists实现)