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

news2024/12/23 20:29:24

文章目录

  • 🐒个人主页
  • 🏅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关键字可以保证多个线程之间的可见性,即一个线程修改了变量的值,其他线程能够及时看到这个变化。

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

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

相关文章

机器学习项目实战-能源利用率 Part-4(模型构建)

博主前期相关的博客可见下: 机器学习项目实战-能源利用率 Part-1(数据清洗) 机器学习项目实战-能源利用率 Part-2(探索性数据分析) 机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选) 这…

AList挂载工具安装搭建使用教程,快速访问多个网盘的资源(保姆级图文)

目录 1. 下载AList2. 命令行启动快速启动小技巧 3. 用户登录4. 添加阿里云网盘帐号5. 添加百度云网盘资源总结 欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 软件功能:将多个网盘的资源聚合在一起&…

本地部署 privateGPT

本地部署 privateGPT 1. 什么是 privateGPT2. Github 地址3. 创建虚拟环境4. 部署 privateGPT5. 配置 .env6. 下载模型7. 将文件放入 source_documents 目录中8. 摄取所有数据9. 向本地文档提问 1. 什么是 privateGPT 利用 GPT 的强大功能,私密地与您的文档交互&am…

Flutter 笔记 | Flutter 中的路由、包、资源、异常和调试

路由管理 Flutter中的路由通俗的讲就是页面跳转。在Flutter中通过Navigator组件管理路由导航。并提供了管理堆栈的方法。如:Navigator.push和Navigator.pop Flutter中给我们提供了两种配置路由跳转的方式:1、基本路由, 2、命名路由 普通路…

详解c++STL—函数对象

目录 1、函数对象 1.1、函数对象概念 1.2、函数对象的使用 2、谓词 2.1、谓词概念 2.2、一元谓词 2.3、二元谓词 3、内建函数对象 3.1、理解内建函数对象 3.2、算术仿函数 3.3、关系仿函数 3.4、逻辑仿函数 1、函数对象 1.1、函数对象概念 概念: 重载…

数据结构第三天 【二叉搜索树】

这道题真是写的我想吐了,主要是函数太多,排错太难了,搞了两个小时,基本就是在排错,排了一个小时,后面自己心态也有点崩溃了,其实不是一道很难的题,但是是一个非常麻烦的题目&#xf…

使用Serv-U搭建FTP服务器并公网访问

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 转载自内网穿透工具的文章:使用Serv-U搭建FTP服务器并公网访问【内网穿透】_ 1. 前言…

linux专题:GDB详细调试方法与实现

系列文章目录 例如:第一章 Linux-GDB 调试实验的使用 文章目录 目录 系列文章目录 文章目录 一、实验目的 二、实验现象 三、实验准备 四、Linux GDB调试实验流程 五、Linux GDB 调试器 总结 一、实验目的 掌握使用 gcc 分步编译 c 代码为可执行程序步骤以及 gc…

【数学建模】步长的选择(优化建模)

人们每天都在行走,排除以运动健身为目的的走路方式,而仅仅考虑距离固定,以节省体力为最终目的的行走,那么选择多大的步长才最省力? 人在走路时所做的功等于抬高人体重心所需的势能与两腿运动所需的动能之和。在给定速度…

又到520了,来画一朵抽搐的玫瑰花吧

文章目录 静态的玫瑰 敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,而且光是三维的也没啥意思,最好再加上能动起来。 静态的玫瑰 网上有很多生…

AIGC技术研究与应用 ---- 下一代人工智能:新范式!新生产力!(1-简介)

文章大纲 AI GC参考文献与学习路径模型进化券商研报陆奇演讲AI GC AI模型可大致分为决策式/分析式AI(Discriminant/Analytical AI)和生成式AI (Generative AI)两类。 决策式AI:学习数据中的条件概率分布,根据已有数据进行分析、判断、预测,主要应用模型有用于推荐系 统和…

Elasticsearch 集群部署插件管理及副本分片概念介绍

Elasticsearch 集群配置版本均为8以上 安装前准备 CPU 2C 内存4G或更多 操作系统: Ubuntu20.04,Ubuntu18.04,Rocky8.X,Centos 7.X 操作系统盘50G 主机名设置规则为nodeX.qingtong.org 生产环境建议准备单独的数据磁盘主机名 #各自服务器配置自己的主机名 hostnamectl set-ho…

chatgpt赋能Python-pythonf检验

Python的重要性与应用 Python是一种高级编程语言,因其简单易学和灵活性而备受欢迎。它已经成为数据分析、web开发、机器学习等许多领域的重要工具。在本篇文章中,我们将探讨Python在SEO中的作用。 Python对SEO的影响 SEO是搜索引擎优化的缩写&#xf…

【数据结构】线性表 ⑥ ( 双循环链表 | 双循环链表插入操作 | 双循环链表删除操作 | LinkedList 双循环链表源码分析 )

文章目录 一、双循环链表插入操作处理二、双循环链表删除操作处理三、LinkedList 双循环链表源码分析1、链表节点2、LinkedList 链表中收尾元素指针3、链表插入操作4、链表向指定位置插入操作5、获取指定索引的元素6、删除指定索引的元素 一、双循环链表插入操作处理 双循环链表…

【JVM】6. 堆

文章目录 6.1. 堆(Heap)的核心概述6.1.1. 堆内存细分6.1.2. 堆空间内部结构(JDK7)6.1.3. 堆空间内部结构(JDK8) 6.2. 设置堆内存大小与OOM6.2.1. 堆空间大小的设置6.2.2. OutOfMemory举例 6.3. 年轻代与老年…

[CTF/网络安全] 攻防世界 backup 解题详析

[CTF/网络安全] 攻防世界 backup 解题详析 PHP备份文件名备份文件漏洞成因备份文件名常用后缀姿势总结 题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧! PHP备份文件名 PHP 脚本文件的备份文件名&#…

【瑞萨RA_FSP】外部中断

文章目录 一、外部引脚中断二、中断过程三、按键外部中断 一、外部引脚中断 1. ICU框图 根据ICU的功能框图可以知道,首先需要配置IRQCR寄存器(IRQ Control Register,IRQ英文全称:Interrupt ReQuest,中文名:中断请求&a…

C++入门篇---(命名空间、缺省参数、以及输入、输出)

前言 c 我来了,恭喜牛牛解锁新世界.开启c的学习之旅. 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:讲解C…

30年后,茶产业规模是现在的10倍

做个预言:30年后,茶产业是现在的10倍 【5.21是世界茶日】 杭州中国茶博会,我来啦 人工智能越让生产效率越来越高 常用物质将会唾手可得 人闲着,无法体会活着的意义,才是挑战 田园诗茶生活方式会有一席之地 趣讲大白话&…

【EMC专题】案例:读一读TI的按接口选择ESD器件指南

在TI的官网上看到一份ESD by Interface Selection Guide,也就是按接口选择ESD器件指南。因此想读一读看看一起学习一下。 首先看一下文档,是比较简明的。可以看到不同的接口推荐了一些不同的保护器件。因为应用环境不一样,所有有不同的器件封装(如单体、集成TVS等),这样在…