【从零开始学习JAVA | 第三十七篇】初识多线程

目录

前言:

​编辑

引入:

多线程:

        什么是多线程:

        多线程的意义:

        多线程的应用场景:

总结:


前言:

                本章节我们将开始学习多线程,多线程是一个很重要的知识点,他在我们实际开发中应用广泛并且基础,可以说掌握多线程编写程序是每一个程序员都应当必备的技能,很多小伙伴也会吐槽多线程比较难,但因为其实用性和广泛性,我们一定要学好多线程。

引入:

在现代社会,计算机已经渗透到了我们生活的方方面面。我们使用计算机来处理各种任务,从简单的文档编辑到复杂的数据分析和图像处理。然而,你是否曾想过,当我们的计算机只能运行单个任务时,我们是否能够充分发挥其潜力,实现更高效的处理能力呢?

想象一下,你正在处理一个巨大的数据集,并且需要对其中的每个元素进行计算。在单线程的情况下,你会发现程序需要花费很长的时间来完成这些计算,同时你的计算机的其他资源却处于闲置状态。这是不是让你感到有些无奈?

正是在这样的背景下,多线程技术应运而生。多线程允许我们同时执行多个任务,并将计算机的资源充分利用起来。通过将任务分解为多个线程,并让它们并行执行,我们可以极大地提高程序的执行效率,缩短处理时间,甚至解决一些繁重任务下难以应付的问题。

多线程:

        什么是多线程:

介绍多线程之前我们先来介绍一下什么是线程:

在Java中,线程(Thread)程序执行最小单位,是进程中的一个执行流程。每个Java程序都至少有一个主线程(Main Thread),主线程从程序的main()方法开始执行。除了主线程外,我们可以通过创建线程对象来创建多个辅助线程,实现多线程并发执行的效果。

线程是操作系统能够进行调度的最小单位,他被包含在进程之中,是进程的实际运作单位

在Java中,进程(Process)是一个正在运行的程序的实例。进程是操作系统分配资源的基本单位,每个进程有自己独立的内存空间和系统资源。在Java中,通过运行Java程序(类)来创建进程。

每个Java程序至少有一个进程,即Java虚拟机(Java Virtual Machine,JVM)进程。JVM是一个独立的进程,它负责解释和执行Java程序的字节码指令。

当我们运行一个Java程序时,系统会为该程序创建一个新的进程。该进程会分配内存空间,加载和执行程序代码,并为程序分配所需的资源。Java程序可以包含多个线程,这些线程在同一个进程中并发执行。

放到计算机中,进程就是程序的基本执行实体。

 我们在电脑的任务管理器中可以看到各种各样的进程

我们以电脑杀毒软件为例:

我们既可以在这个界面进行电脑加速,又可以在其他界面进行电脑杀毒。而此时电脑杀毒软件就是一个进程,电脑加速和电脑杀毒就是两个线程。

而这样互相独立的可以同时运行的功能(线程)有多个,就形成了多线程。

        多线程的意义:

  1. 提高程序的执行效率:多线程可以使程序同时执行多个任务,有效地利用多核处理器的并行计算能力。通过将任务分配给不同的线程,可以加速程序的执行速度,提高整体的处理能力。

  2. 改善系统的响应性:在单线程程序中,如果一个任务的执行时间很长,会导致整个程序的阻塞,用户界面无法响应。而采用多线程的方式,可以将长时间运行的任务放在独立的线程中执行,主线程可以继续处理其他任务,保持程序的响应性,提升用户体验。

  3. 实现并发编程:多线程可以实现并发编程,即多个线程同时运行,共享数据和资源。通过合理地设计和管理线程,可以在复杂的应用程序中实现并发操作,提高程序的灵活性和效率。

  4. 支持复杂的任务分解和协同处理:多线程使得复杂的任务可以被分解为多个更小的子任务,并由不同的线程并行处理。这样可以更好地利用系统资源,提高任务的分解和协同处理的效率。

  5. 支持实时应用和多任务处理:多线程可以实现实时应用程序和多任务处理。通过将不同的任务分配给不同的线程,可以更好地控制和管理系统中的任务执行,满足实时性要求。

        多线程的应用场景:

  1. 数据处理和计算密集型任务:当需要对大量数据进行处理、复杂计算或算法运算时,多线程可以将任务分解为多个子任务并并行执行,提高处理速度和效率。例如,图像处理、视频编码、信号处理、科学计算等领域都可以受益于多线程。
  2. 网络通信和服务器处理:在网络应用程序中,多线程常用于处理同时到达的网络请求或客户端连接。每个请求或连接可以分配给独立的线程来处理,提高服务器的并发处理能力。例如,Web服务器、聊天应用、文件传输等都可以使用多线程来同时处理多个客户端请求。
  3. 图形界面和交互应用:多线程可以改善图形界面应用程序的响应性。通过将长时间运行的任务放在后台线程中执行,可以保持主线程的响应,提高用户界面的流畅度和用户体验。例如,在游戏开发中,可以用多线程来实现游戏逻辑、图形渲染和用户交互等并行处理。
  4. 异步编程和并发控制:多线程可以用于实现异步编程模型,通过创建多个线程来实现并发操作和任务协同。例如,在并发编程框架中,多线程可用于处理各种并发任务,如并行计算、资源管理、事件处理等。
  5. 实时应用和多任务处理:多线程在实时应用程序中非常有用。通过合理管理多个线程的执行和优先级,可以实现对实时任务的快速响应和处理。例如,在实时控制系统、机器人控制、音视频流处理等领域,多线程可用于同时处理多个实时任务。

总之,多线程的应用场景非常广泛,适用于需要同时处理多个任务、提高程序执行效率和实现并发操作的各种应用程序和系统。

小TIPS:

        在多线程这里我们经常会将讲到两个概念:并发并行

并发是指在同一时间段内交替执行多个任务或操作,这些任务可以在时间上重叠,但是在特定时刻只能有一个任务正在执行。在并发中,任务通过在不同的时间片内交替执行来实现同时进行的错觉。并发常见于多任务操作系统、多用户系统和网络应用中,能够提高系统的吞吐量和资源利用率。

我们用图来表示并发

并行是指在同一时间点上同时执行多个任务或操作,多个任务可以并行进行,彼此之间相互独立。并行运算通常需要多核处理器或者分布式计算系统来实现,能够加快计算速度,并同时处理更多的任务。并行常见于高性能计算、图像处理、科学计算和大规模数据处理等领域。

我们用图来表示并行

而我们可以在任务资源管理器中查看自己电脑最多可以同时处理的线程数

例如我的电脑是16线程的,那么我对电脑就可以并行处理最多16条线程,一旦超过16条,那么就要转为并发状态,交替处理线程以此来保证效率。

总结:

   无论是数据处理还是视频编辑,单线程的执行效率总是让人感到无奈。然而,通过多线程技术,我们可以同时执行多个任务,并充分利用计算机资源。想象一下,将繁重的任务分解为多个子任务,每个子任务都由独立的线程来处理,你会发现程序执行速度大幅提升,工作效率大增。多线程不仅简单而强大,也在各行各业展现着不可或缺的作用。让我们探索多线程的世界,释放计算机的潜力!

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

【Spring Boot】请求参数传json数组,后端采用(pojo)新增案例(103)

请求参数传json数组,后端采用(pojo)接收的前提条件: 1.pom.xml文件加入坐标依赖:jackson-databind 2.Spring Boot 的启动类加注解:EnableWebMvc 3.Spring Boot 的Controller接受参数采用:Reque…

openCV C++环境配置

文章目录 一、openCV 安装二、新建项目三、配置环境变量四、测试使用 编译器:vs2017 OpenCV:4.5.4 一、openCV 安装 将openCV安装到一个路径下,我安装到了D盘根目录下 二、新建项目 在vs2017新建控制台空项目,打开项目属性 在VC目录 -> 包含目录下…

【Spring Boot】请求参数传json对象,后端采用(map)CRUD案例(101)

请求参数传json对象,后端采用(map)接收的前提条件: 1.Spring Boot 的Controller接受参数采用:RequestBody 2.需要一个Json工具类,将json数据转成Map; 工具类:Json转Map import com…

面试热题(接雨水问题)

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 我们看到题的第一步,永远是对入参进行判断 public int trap(int[] height) {if (height null) {return 0;}...} 但是我们想想看,接…

Springboot -- 按照模板生成docx、pdf文件,docx转pdf格式

使用 poi-tl 根据模板生成 word 文件。 使用 xdocreport 将 docx 文件转换为 pdf 文件。 xdocreport 也支持根据模板导出 word ,但是 poi-tl 的功能更齐全,操作更简单,文档清晰。 poi-tl 、xdocreport 内部均依赖了 poi ,要注意两…

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码, 后端是java源码。

利用鸿鹄快速构建公司IT设备管理方案

需求描述 相信应该有一部分朋友跟我们一样,公司内部有很多各种各样的系统,比如资产管理、CRM、issue管理等等。这篇文章介绍下,鸿鹄是如何让我们的资产系统,按照我们的需求展示数据的。 我们的资产管理系统,是使用开源…

机器学习---线性回归、多元线性回归、代价函数

1. 线性回归 回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后 将该数学模型用于预测或者分类。该方法处理的数据可以是多维的。 回归是由达尔文的表兄弟Francis Galton发明的。Galton于1877年完成了第一次回归预测&…

51:电机(ULN2003D)

1:介绍 我们51单片机使用的是直流电机 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转…

SpringCloudAlibaba之Ribbon

Ribbon是nacos自带的负载均衡器,属于客户端的负载均衡 但是在Spring高级版本中让LoadBalancer替代了 本人用的是2.1.0的nacos,ribbon还没有被替换。 使用: 在配置类中:LoadBalanced BeanLoadBalancedpublic RestTemplate restT…

MacOS Monterey VM Install ESXi to 7 U2

一、MacOS Monterey ISO 准备 1.1 下载macOS Monterey 下载🔗链接 一定是 ISO 格式的,其他格式不适用: https://www.mediafire.com/file/4fcx0aeoehmbnmp/macOSMontereybyTechrechard.com.iso/file 1.2 将 Monterey ISO 文件上传到数据…

编辑接口和新增接口的分别调用

在后台管理系统中,有时候会碰到新增接口和编辑接口共用一个弹窗的时候. 一.场景 在点击新增或者编辑的时候都会使用这个窗口,新增直接调用接口进行增加即可,编辑则是打开这个窗口显示当前行的数据,然后调用编辑接口。 二.处理方法 在默认的情况下,这个窗口用来处理…

【从零开始学习JAVA | 第三十八篇】应用多线程

目录 前言: 多线程的实现方式: Thread常见的成员方法: 总结: 前言: 多线程的引入不仅仅是提高计算机处理能力的技术手段,更是适应当前时代对效率和性能要求的必然选择。在本文中,我们将深入…

使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

微服务系列<3>---微服务的调用组件 rpc 远程调用

什么是rpc调用,让我们调用远程方法就像调用本地方法一样 这就属于rpc调用 rpc是针对于本地来说的 调用远程方法根调用本地方法一样 如果能达到这种效果 就是rpc调用如果达到一种效果 调用远程和调用本地一样 他就是一种rpc框架2个微服务 之间发的调用 我们之前通过ribbon的方式…

云原生落地实践的25个步骤

一、什么是云原生? 云原生从字面意思上来看可以分成云和原生两个部分。 云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思,我们在开始…

数论分块学习笔记

准备开始复习莫比乌斯反演,杜教筛这一部分,先复习一下数论分块 0.随便说说 数论分块可以计算如下形式的式子 ∑ i 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum_{i1}^{n}f(i)g(\lfloor\frac{n}{i}\rfloor) ∑i1n​f(i)g(⌊in​⌋)。 利用的原理是 ⌊ n i ⌋ \lf…

UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号

版本 5.2.1 裁剪 - 剪切 - 剪切到边界 裁剪 - 高级 - 溢出策略 - 省略

消息队列项目(1)

概念 这里的消息队列, 大致上就是一个生产者消费者模型. 我这个消息队列是仿照 RabbitMQ 的实现原理来进行编写的 需求分析 有几个核心的概念: 生产者(Producer)消费者(Consumer)中间人(Broker)发布(Publish) :生产者向中间人投递消息的过程订阅(Subcribe) :记录哪些消费者…

【腾讯云 Cloud Studio 实战训练营】CloudStudio体验真正的现代化开发方式,双手插兜不知道什么叫对手!

CloudStudio体验真正的现代化开发方式,双手插兜不知道什么叫对手! 文章目录 CloudStudio体验真正的现代化开发方式,双手插兜不知道什么叫对手!前言出现的背景一、CloudStudio 是什么?二、CloudStudio 的特点三、CloudS…