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

news2024/11/17 3:03:27

目录

前言:

​编辑

引入:

多线程:

        什么是多线程:

        多线程的意义:

        多线程的应用场景:

总结:


前言:

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

引入:

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

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

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

多线程:

        什么是多线程:

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

在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.coloradmin.cn/o/831901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java泛型(Generic)

文章目录 泛型概述泛型的引入 使用泛型举例集合中使用泛型 比较器中使用泛型相关使用说明自定义泛型结构自定义泛型类或泛型接口3.2.1 说明 自定义泛型方法举例练习 泛型在继承上的体现通配符的使用使用注意点有限制的通配符泛型应用举例 泛型概述 举例1:中药店&am…

第一章:继承

系列文章目录 文章目录 系列文章目录前言继承的概念及定义继承的概念继承定义定义格式继承关系和访问限定符继承基类成员访问方式的变化 基类和派生类对象赋值转换(公有继承)继承中的作用域派生类的默认成员函数继承与友元继承与静态成员不能被继承的类复…

学习系统编程No.35【基于信号量的CP问题】

引言: 北京时间:2023/8/2/12:52,时间飞逝,恍惚间已经来到了八月,给我的第一感觉就是快开学了,别的感觉其实没有,哈哈!看着身边的好友网络相关知识都要全部学完了,就好像…

Linux系统---进程概念

文章目录 冯诺依曼体系结构操作系统(OS)进程的理解 进程状态 进程优先级 环境变量 进程地址空间 一、冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 如图为冯诺依曼体系结构图&…

【BEV感知】2-BEV感知算法数据形式

文章目录 1 图像1.1 如何获取图像特征? 2 点云2.1 稀疏性2.2 无序性2.3 为什么要用点云?2.4 如何提取点云特征?Point-basedVoxel-based 3 图像点云 1 图像 图像是由相机生成的,是将三维世界中的坐标点(单位为米&#…

I- yh的线段(2023河南萌新联赛第(四)场:河南大学)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 yh喜欢好线段,好线段即两条线段相交且不与其他线段重合的线段。 两条线段[l1,r1]和[l2,r2]相交(如果存在至少一个x,使得l1≤x≤r1和l2≤x≤r2,则认为两个线段…

Linux运维面试题(四)之Linux服务管理

Linux运维面试题(四)之Linux服务管理 4.1 SSHSSH的登录验证方式SSH的登陆端口(默认22)和监听设置(/etc/ssh/sshd_config)SSH的登录用户限制(/etc/ssh/sshd_config PermitRootLogin)SSH的登录超时设置(/etc/…

软件测试之Docker常见问题汇总!附解决方法!

1、配置国内源进行docker安装,报错 HTTP Error 404 - Not Found 【整整200集】超超超详细的Python接口自动化测试进阶教程,真实模拟企业项目实战!! 原因: 由于配置国内镜像源时,把地址写错了,导…

使用火山云搜索ESCloud服务构建图文检索应用(以文搜图/以图搜图)

图文检索在生活中具有广泛的应用,常见的图片检索包括基于文本内容搜索和基于图片内容搜索。用户通过输入文字描述或上传图片就可以在海量的图片库中快速找到同款或者相似图片,这种搜索方式被广泛应用于电商、广告、设计以及搜索引擎等热门领域。 本文基…

Windows服务器中IIS部署图片文件夹—超详细图文

Windows服务器中IIS部署图片文件夹—超详细图文 注意:部署前请先安装IIS IIS安装步骤可参照:win11安装IIS步骤—图解_win11 iis_咏絮v的博客-CSDN博客 1、打开 IIS管理器—选择【网站】后右键【添加站点】 2、【添加网站】(填写网站名称/物理路径/IP地…

2023华数杯数学建模C题思路代码 母亲身心健康影响

C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护, 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、 压力等,可能会对婴儿的认知、情感、社会行…

【java】【maven】【基础】MAVEN安装配置介绍

目录 1 下载 2 安装-windows为例 3 配置环境变量 3.1 JAVA_HOME 3.2 MAVEN_HOME 3.3 PATH 3.4 验证 4 MAVEN基础概念 4.1 仓库概念 4.2 坐标概念 4.2.1 打开网址 4.2.2 输入搜索内容junit 4.2.3 找到对应API名称点击 4.2.4 点击对应版本 4.2.5 复制MAVEN坐标 4.3 配置…

计算机网络(4) --- 协议定制

计算机网络(3) --- 网络套接字TCP_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/132035757?spm1001.2014.3001.5501 目录 1. 协议的基础知识 TCP协议通讯流程 ​编辑 2.协议 1.介绍 2.手写协议 1.内容 2.接口 …

Vulnhub: blogger:1靶机

kali:192.168.111.111 靶机:192.168.111.176 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.176 在80端口的/assets/fonts/目录下发现blog目录,访问后发现为wordpress 利用wpscan发现wordpress插件wpdisc…

WiFi爆破实战

提示:本文记录了博主的一次WiFi爆破实战 文章目录 写在前面一、将网卡连接Kali虚拟机二、网卡配置骤2.1 识别网卡2.2 净化环境2.3 启动监听2.4 探测周边WiFi 三、实施攻击3.1 对选定的目标WiFi实施监听3.2 发起DOS攻击3.3 实施爆破 写在最后 写在前面 提示&#xf…

LNMP搭建及论坛搭建

一、LNMP LNMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件, 能够提供动态Web站点服务及其应用开发环境。LNMP是一个缩写词,具体包括Linux操作系统、nginx网站服务器、MySQL数据库服务器、PHP(或…

实用,3分钟免费生成中小学新生录取查询系统

在新学期开始之际,作为招生负责人,您是否已经做好准备来迎接新学年的招生工作呢?录取新生所需的任务包括成绩信息的录入、招生要求的核对以及新生录取信息的查询公布,这些繁重的工作给负责招生的老师带来了巨大的压力和挑战。 为…

Dockerfile构建LNMP镜像

建立工作目录 [rootlocalhost ~]# mkdir lnmp [rootlocalhost ~]# cd lnmp/ 编写Dockerfile文件 [rootlocalhost lnmp]# vim Dockerfile [rootlocalhost lnmp]# ll 总用量 4 -rw-r--r--. 1 root root 774 8月 3 14:54 Dockerfile [rootlocalhost lnmp]# vim Dockerfile #基础…

2023年华数杯A题

A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性,在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前,由单根隔热材料 A 纤维编织成的织物,其热导率可以直接测出;但是 单根隔热材料 A 纤维…

软件为什么要进行性能压力测试?

软件为什么要进行性能压力测试?随着软件应用的不断增多和复杂度的提高,软件的性能对用户体验和业务成功至关重要。性能问题可能导致软件运行缓慢、崩溃或无响应,给用户带来不便甚至损失。为了确保软件能够在高负载和压力下正常运行&#xff0…