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

Java线程概述 (一)线程介绍

文章目录

  • 🐒个人主页
  • 🏅JavaSE系列专栏
    • 📖前言:
      • 🪅什么是程序 、进程、线程?
      • 🪅线程的生命周期
      • 🪅多线程
      • 🪅守护者线程
      • 🪅线程并行与并发
      • 🪅死锁
      • 🪅线程异步与线程同步

🐒个人主页

🏅JavaSE系列专栏

📖前言:

本篇博客主要以介绍关于以线程为核心的知识点导读
拓展知识:操作系统的四大特征

🪅什么是程序 、进程、线程?

程序】:为完成特定任务,用某种语言编写的一组指令集合。
||ヽ(* ̄▽ ̄*)ノミ|Ю 其实就是一段静态的(没有运行的)代码~

关于进程概念】:你就理解为应用程序在内存中运行着的任务就行了。(从操作系统的角度上讲:进程是操作系统进行内存资源分配的最小单位)
||ヽ(* ̄▽ ̄*)ノミ|Ю 其实就是一段动态的运行代码~,在内存中操作系统为其创建PCB(进程控制器),使其成为进程实体

关于线程概念】:就是把内存里的任务进程在细化为一个一个的小任务供CPU处理器执行。(线程是进程最小的执行单位,是操作系统的CPU处理器进行任务调度的最小单位,)
||ヽ(* ̄▽ ̄*)ノミ|Ю 其实就是由于进程任务太大了,进程任务再进行细化为线程任务来上cpu执行~

🪅线程的生命周期

在这里插入图片描述

🪅多线程

概念】:一个程序内部,可以同时执行多个线程任务,这些任务都是独立的。
优点】:提高程序响应速度,提高CPU利用率,改善程序结构,将一些复杂的任务分为多个线程,独立运行。
【缺点】:由于是多个任务占用内存空间,所以要求CPU(硬件)的性能要高

🪅守护者线程

【概念】:顾名思义,就是这个线程它需要守护身边的线程,帮助这些线程应对突发情况,处理这些线程留下的缓存垃圾。
例子:Java的JVM虚拟机中有一个垃圾回收机制,这里就用到了守护线程来清理用户线程留下的内存垃圾
如果将一个线程设置为守护线程,只有当其他用户级线程都结束后,守护者线程自动结束,(必须在启动线程之前设置

new Thread().setDaemon(true);//设置为守护线程

🪅线程并行与并发

(在此链接处有相关介绍)
拓展知识:操作系统的四大特征

🍔并发概念: 指两个或多个事件同一时间间隔发生。宏观上感觉是同时发生的,但微观上是交替发生、依次发生的。 ‘买票,抢购,秒杀看似同时进行,但是他们都得有一个先来后到的关系’
常考易混淆概念·——·——并行

🎇并行概念:指两个或多个事件在同一时刻同时发生。

在这里插入图片描述

🪅死锁

是指有多个线程(>=2)会因为相互把持住对方所需要的资源而不放手,并且一直请求对方释放自己所需要的资源,而形成的一种僵持局面。
就像堵车一样,谁都不愿意让开地方先让对方通过,从而陷入了僵持
在这里插入图片描述

🪅线程异步与线程同步

线程异步】:就是线程会以一种不可预知的速度向前推进(其实就是代码执行可能不是一口气先把一个进程执行完,只执行了部分,就直接执行其他进程了),这可能会引发死锁问题
线程同步】:是为了解决‘’异步可能形成死锁问题‘’引入的,
是指多个线程之间进行数据交换时,需要保证数据的正确性和一致性。在多线程环境下,如果没有同步机制,就会出现数据竞争、死锁等问题。(其实就像你与其他人去抢购最后一张电影票,必须规定一个顺序,肯定有人抢不到票,我们给排了一个顺序,就是“排队”+“锁” )、(就像堵车,交警来了,给你规定了一个顺序,才把道路疏通了

常见的线程同步方法有:
synchronized关键字:Java中的synchronized关键字可以用于修饰方法或代码块,实现对临界区的互斥访问。
Lock类:Java中的Lock类提供了比synchronized更细粒度的锁机制,可以更加灵活地控制线程的并发访问。
volatile关键字:Java中的volatile关键字可以保证多个线程之间的可见性,即一个线程修改了变量的值,其他线程能够及时看到这个变化。

相关文章:

Java线程概述 (一)线程介绍

文章目录 🐒个人主页🏅JavaSE系列专栏📖前言:🪅什么是程序 、进程、线程?🪅线程的生命周期🪅多线程🪅守护者线程🪅线程并行与并发🪅死锁&#x1f…...

操作系统第三章——存储系统(下)

锦衣雪华玉颜色,回眸一笑天下倾 文章目录 3.2.1 虚拟内存的基本概念知识总览传统存储方式的特征,缺点局部性原理虚拟内存的定义如何实现虚拟内存技术知识总结 3.2.2 请求分页管理方式知识总览页表机制缺页中断机制地址变换机制知识回顾 3.2.3 页面置换算…...

初识结构体

目录 结构体的声明 结构体的基础知识 结构体的声明 结构体成员的类型 结构体变量的定义和初始化 定义 初始化 结构体成员的访问 结构体变量访问成员 结构体指针访问指向变量的成员 结构体传参 传地址 传结构体 结论 结构体的声明 结构体的基础知识 数组&#xff…...

协程并发下数据汇总:除了互斥锁,还有其他方式吗?

1. 简介 本文介绍了在并发编程中数据汇总的问题,并探讨了在并发环境下使用互斥锁和通道两种方式来保证数据安全性的方法。 首先,通过一个实例,描述了一个并发拉取数据并汇总的案例,并使用互斥锁来确保线程安全。然后&#xff0c…...

5、Ray-Actor模型和并发编程

5、Ray-Actor模型和并发编程 导航 1.简介和背景 2.Ray的基本概念和核心组件 3.分布式任务调度和依赖管理 4.对象存储和数据共享 5.Actor模型和并发编程 6.Ray的高级功能和扩展性 7.使用Ray构建分布式应用程序的案例研究 8.Ray社区和资源 9.核心框架介绍...

HNU-电路与电子学-小班2

第二次讨论 讨论题目: 1、电子秤的电桥电路可以分别用 1 个压控电阻、 2 个压控电阻、 3 个压控电阻、 4 个压控电阻实现吗?试写出每种实现的 U AB 输出表达式,并分析哪种实现电桥 电压的灵敏度(SV/ △ R )高。 …...

二分图匹配算法

匈牙利算法、Hopcroft-Karp算法和Kuhn-Munkres算法是三种常见的二分图匹配算法,它们在实现方式、时间复杂度和适用场景上有所差异。以下是它们的区别和优缺点: 匈牙利算法: 实现方式:匈牙利算法使用深度优先搜索(DFS)来寻找增广路…...

虹科技术 | 虹科EtherCAT增量编码器输入模块数据采集实操测试

1. 背景介绍 编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为…...

2023.05.21 学习周报

文章目录 摘要文献阅读1.题目2.背景3.现存问题和解决方法4.方法4.1 Variational mode decomposition (VMD)4.2 Bidirectional LSTM 5.实验5.1 数据标准化5.2 评价指标5.3 实验过程及结果 6.结论和展望 优劣解距离法有限元1.求解一个简单的传热问题2.有限元如何实现 总结 摘要 …...

资深程序员深度体验ChatGPT一周发现竟然....

周一打卡上班,老板凑到我跟前:“小李啊,这周有个新需求交给你做一下,给我们的API管理平台新增一个智能Mock的功能...”。我条件反射般的差点脱口而出:“这个需求做不了..”。不过在千钧一发之间,我想起了最…...

带你深入了解Android Handler的用法

Android中,Handler是一类用于异步消息传递和线程之间通信的基础框架。一个Handler是一个线程的处理器,可以接收消息,并调度运行它们。使用Handler,应用程序可以将处理器与一个线程关联,以将来的时间运行任务。而使用Ha…...

生于零售的亚马逊云科技,如何加速中国跨境电商企业出海?

导读:跨境电商进入精耕细作的新阶段。 作为中国企业出海的重要领域之一,近几年跨境电商行业处在快速发展中。商务部数据显示,2022年中国跨境电商出口达1.55万亿,同比增长11.7%。2023年1-2月,跨境电商进出口总额同比增长…...

兄弟组件传值$on无法接收值

方法一 前提是必须引入EventBus,而且该方法一刷新数据就没了 1.组件A里,点击事件里面使用$emit传入数据 2.组件A里,mounted里面使用$on接收数据,并把数据赋给EventBus EventBus.$on(detail,(data) > { EventBus.senddata d…...

Spring事务及事务传播机制

一.事务的含义:多个操作封装在一起,要么同时执行成功,一旦有一个操作执行失败,那么全部执行失败。这里给大家举个例子:比如A给B转账50元,而B没有收到这50元,此时A转账B这个操作也需要进行回滚,恢复到A给B没…...

npm i 常见问题

需要注意的是,如果你在使用 NPM 安装包的过程中遇到了任何问题,可以尝试使用 --verbose 参数打印更详细的错误信息,以便更好地诊断问题。例如: npm install --verbose 1、vue老项目缺少编译环境安装依赖报错的问题 待下载的项目…...

Prometheus+Grafana监控系统

一、简介 1、Prometheus简介 官网:https://prometheus.io 项目代码:https://github.com/prometheus Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员…...

基于脉冲神经网络的物体检测

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 研究的意义在于探索脉冲神经网络在目标检测上的应用,目前主流的脉冲神经网络训练算法有直接BP训练、STDP无监督训练和训练好的ANN的转化,虽然训练算法众多,但是SNN仍然没有一套成熟的训练算…...

Rust每日一练(Leetday0010) 子串下标、两数相除、串联子串

目录 28. 找出字符串中第一个匹配项的下标 Find-the-index-of-the-first-occurrence-in-a-string 🌟🌟 29. 两数相除 Divide Two Integers 🌟🌟 30. 串联所有单词的子串 Substring-with-concatenation-of-all-words &#x…...

As ccess 数据库与表的操作

1. Access 数据库设计的一般步骤 . 2. 基本概念:Access 数据库、表、记录、字段 . 3. 使用表设计器创建表 (1)字段名命名规则 不能空格开头、不能用.!()[]、最长 64 个字符 (2)字段类型:文本、数字、日期/时…...

自动化的测试工具

1, 自动化功能测试工具:QTP、selenium 2, 自动化性能测试功能:LoadRunner、jmeter 3, 自动化接口测试工具:Charles、soapUI、LoadRunner、jmeter、postman、 测试工具 4, 测试管理工…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...