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

认识线程 — JavaEE

 83fa83208d714018ac75190a40c156e9.gif

目录

 

认识线程(Thread)

1 线程是什么?

2 为什么要有线程

3 进程和线程的区别

区别一

区别二

区别三

区别四

4. Java的线程和操作系统线程的关系


 

认识线程(Thread)


1 线程是什么?


  • 一个线程就是一个 "执行流"。
  • 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时" 执行着多份代码。
  • 将一个大任务分解成不同小任务,交给不同执行流分别排队执行。

2 为什么要有线程


 

d9504f19322e4438aee1867ddfe7879b.png

 

但是在服务器开发场景上,一般情况下,客户端,服务器都在一台计算机上;但是我们可以把客户端和服务器分别放在两台电脑上。

此时我们可以通过网络的方式,远程访问mysql服务器,这也是以后工作中,最典型的一种场景

c1743ce267254d2f9c4a49e41af02fa6.png

在这种服务器的情况下,涉及一个非常关键的问题,一个服务器程序,同一时刻,是需要给多个客户端提供服务的:

8c7759f73a7148eab196b0caab64c151.png

客户端按照并发的方式,发送请求到服务器,服务器就要能对这些请求进行处理。怎么处理?

9f1dd611a0484e6fac5369f0629d90cf.png


68a91a9627c549ecae3974f0cbccc59e.png

4d0cc8bb6b734bef94478fee42ebf7ba.png

af36bc4ad9e143ad9f23fe6a1b77d148.png

总结:

引入线程,也可以解决并发编程,提高效率,同时节省开销。

但是,线程不是引入越多越好,适量的引用可以提高效率,引入太多,会因为线程调度的开销过大,反而拖慢程序的性能。

多个线程共享同一份资源,可能会产生冲突,导致线程安全问题,甚至进一步的,如果某一个线程抛出异常没有得到及时的处理,可能会带走整个进程。


3 进程和线程的区别


e46ecb9d68ef49dbb17affda9f77cbae.png

f13c954eff0a44fe952673b1919fed91.png

区别一

进程是包含线程的. 每个进程至少有一个线程存在,即主线程。

cf42a9d65c354d95bb6080f5ea4c4293.png

259a8154370042e4a68e612f21bbd7eb.png

windows 的任务管理器中,我们无法看到进程内部的线程。需要借助一些其他调试工具(VS的调试器,Windbg.....),才可以看到每个进程中的线程


区别二

进程和进程之间不共享内存空间. 同一个进程的线程之间共享同一个内存空间

3670ca429f4b47ab9a644665406998ab.png

区别三

进程是系统分配资源的最小单位,线程是系统调度的最小单位。

af3c3951c8ab473291dc9393ca5ed56a.png

为什么不能说线程共享CPU资源呢?

6d76f357a92d4877bf6b114912dafa1d.png

区别四


一个进程挂了一般不会影响到其他进程. 但是一个线程挂了, 可能把同进程内的其他线程一起带走(整个进程崩溃).

d2a50a2ac8164cf6943a30eda7275db1.png

54ab441ebf244392a4e9d71499a1adc6.png


4. Java的线程和操作系统线程的关系

线程是操作系统中的概念。操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API, 供用户使用(例如 Linux 的 pthread 库)


5c9754c3d5844139a8934bfb81b616ff.png


通俗地讲,API就是,Java的开发大佬写了一些类或者函数,我们拿过来直接用即可。如:

2a00d2587b554ef49cae8560fcde03d1.png


Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装.

64f5b0b0a5a64399b92f351826704e2e.png

 

 

相关文章:

认识线程 — JavaEE

目录 认识线程(Thread) 1 线程是什么? 2 为什么要有线程 3 进程和线程的区别 区别一 区别二 区别三 区别四 4. Java的线程和操作系统线程的关系 认识线程(Thread) 1 线程是什么? 一个线程就是一个 "执行流"。…...

【C++单调栈】853. 车队|1678

本文涉及的基础知识点 C单调栈 LeetCode853. 车队 在一条单行道上,有 n 辆车开往同一目的地。目的地是几英里以外的 target 。 给定两个整数数组 position 和 speed ,长度都是 n ,其中 position[i] 是第 i 辆车的位置, speed[i…...

第十届文荣奖华丽开幕,郁葱以青春与努力绽放青年演员光芒

10月27日,第十届文荣奖在众人的期待中盛大开启,内地青年女演员郁葱受邀出席,作为国内颇具影响力的影视奖项,文荣奖一直以来都致力于发掘和表彰优秀的影视作品和青年影视人才,为影视行业的发展注入新的活力,…...

CMake 生成器表达式介绍

【写在前面】 生成器表达式在构建系统生成期间进行评估&#xff0c;以生成特定于每个构建配置的信息。它们的形式为 $<...>。例如&#xff1a; target_include_directories(tgt PRIVATE /opt/include/$<CXX_COMPILER_ID>) 这将扩展为 “/opt/include/GNU”、“/opt…...

ubuntu 20.04编译驱动报gcc-12 not found错误

最近在自己安装的Ubuntu 系统上编译自定义驱动&#xff0c;发现无法编译.ko,错误如下&#xff1a; 按照如下操作&#xff0c;发现可以解决&#xff0c;记录下&#xff0c;主要是Ubuntu缺少g-12的包 安装包以后发现可以正常编译...

docker sameersbn/bind dns服务器

1. 安装 #下载docker 镜像 docker pull sameersbn/bind#运行 53端口若被占用会启动失败 docker run --name dns -d --restartalways \ --publish 53:53/tcp \ --publish 53:53/udp \ --publish 10000:10000/tcp \ -v /etc/localtime:/etc/localtime \ -v /data/bind/:/data \…...

错误:无法推送一些引用到 ‘https://gitee.com/chek_kk/python-electron-app.git‘

这个错误提示说明在提交时某个文件的大小超过了 Gitee 仓库的单文件大小限制&#xff08;100MB&#xff09;。你需要从Git 历史中彻底移除这个大文件&#xff0c;否则无法推送到远程仓库。 解决步骤 1. 确认大文件信息 使用以下命令找出超过限制的大文件&#xff1a; git re…...

深度剖析美区代理IP的多元应用与优势

在当今数字时代&#xff0c;代理IP&#xff08;Proxy IP&#xff09;已成为互联网使用中的一项关键技术。尤其在美区&#xff0c;代理IP在数据采集、网络安全及在线隐私保护等领域发挥着越来越重要的作用。本文将深入探讨代理IP的基本概念、应用场景以及它带来的诸多优势&#…...

基于KV260的基础视频链路通路(MIPI+Demosaic+VDMA)

目录 1. 简介 1.1 要点 1.2 背景 1.2.1 Got stuck 1.2.2 Cant be Initialized 2. Overlay 2.1 参考 Overlay 2.1.1 KV260 Base 2.1.2 Pynq-CV-OV5640 2.2 自建 Overlay 2.2.1 IIC IP 2.2.2 MIPI CSI-2 Rx 2.2.3 AXI4-S Subset 2.2.4 Demosaic 2.2.5 Pixel Pack …...

Uni-App-04

主页开发 保存主页数据 <script> import { indexData, base } from /serviceexport default {data() {return {base, //把服务器基础地址变量设置为数据属性carousels:[], //轮播广告条目列表menuItems:[], //当前用户选中的功能菜单列表activities:[], //最新的…...

ElasticSearch分片

本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》 ElasticSearch作为一个搜索引擎&#xff0c;会存储海量的数据。而存储海量的数据&#xff0c;就要解决如何存储的问题&#xff0c;并且保证数据不会丢失&#xff0c;同时还需要保证数据检索的效率&#xff0c;尽可能…...

spring高手之路

以下是一些可以快速入门Spring的方法&#xff1a; 1. 学习基础知识 阅读官方文档&#xff1a;Spring官方文档是最权威的学习资料。它详细介绍了Spring的各个模块、概念和使用方法。从核心模块开始&#xff0c;了解如依赖注入&#xff08;DI&#xff09;和控制反转&#xff08…...

工字钢与H型钢有什么区别?90%的工程师都搞错了!

这里为大家做一个详尽的解答&#xff1a;很多人认为工字钢是国内的叫法&#xff0c;H型钢是国外的叫法&#xff0c;其实这个认知是错误的。H型钢和工字钢从形状上来说是不一样的&#xff0c;见下图&#xff1a; 工字钢 工字钢主要分为普通工字钢、轻型工字钢和宽翼缘工字钢。按…...

10个程序员可以接私活的平台(非常详细)零基础入门到精通,收藏这篇就够了

私活接的好收入不比上班少&#xff0c;一些同学靠接私活月收入也上万甚至几万了。今天老韩来分享一下有哪些接私活的网站和平台&#xff0c;转发收藏以后备用 我们先来聊聊什么样的私活不能接。。 1、没有第三方担保的个人对个人的尽量不要接&#xff0c;双方都没保障&#x…...

小程序云开发CMS新版数据模型讲解,可视化网页管理后台,内容管理对数据库进行增删改查操作,新闻小程序实战学习

一直跟着石头哥学习小程序开发的同学比较清楚cms是什么&#xff0c;cms就是可以进行可视化的管理云开发数据库的网页后台。有了cms我们可以很方便的管理云开发数据库。 但是云开发官方一直改版&#xff0c;所以现在cms功能被整合到了云开发的数据模型里&#xff0c;也就是现在想…...

undertow服务器初始化

springboot整合undertow服务器的源码从老生常谈的createWebServer方法谈起。spring会在生成所有bean后到创建web容器&#xff0c;此时会到容器找到ServletWebServerFactory接口bean&#xff0c;spring会根据引入的框架确定生成的ServletWebServerFactory&#xff0c;我们在mave…...

LeetCode9:回文数

原题地址&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff…...

模板语法(2)

一、循环 在模板中可以用v-for指令来循环数组&#xff0c;对象等。 1. 循环数组 <script setup name"App">import { reactive } from "vue"const books reactive([{title: 三国演义,author: 罗贯中}, {title: 水浒传,author: 施耐庵}, {title: 西…...

从头学PHP之数组输出基本函数

上期我们讲到了数组&#xff0c;数组是个特殊的变量&#xff0c;在程序中的重要程度很高&#xff0c;大部分数据处理的时候会用到这种特殊的变量&#xff0c;那么现在让我们继续深入一下吧。 上期我们打印出了数组的值&#xff0c;用print_r()或者var_dump()这俩函数&#xff0…...

基于SSM+小程序的4S店客户管理系统(汽车2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 4S店客户管理系统主要包括管理员、用户、门店三个权限角色 1、管理员实现了首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...