Java多线程基础知识-1

news2025/2/27 7:36:34

什么是程序?

可执行的文件。

什么是进程?

进程是程序一次动态执行的过程,它是资源分配与管理的基本单位。

什么线程?

线程是进程创建的,它是调度和执行的基本单位。线程不拥有系统资源,只拥有一点必不可少的资源,但它可以与同一个进程的其它线程共享进程的全部资源。

什么是纤程(了解)?

  • 概念:它是用户空间的线程,启动数量多,纤程之间切换资源消耗比较低。
  • 线程与纤程的本质区别是一个通过内核空间(线程),一个不通过内核空间(纤程)
  • 目前到JDK13并没有支持纤程。

什么是线程切换?

单核CPU设定多线程是否有意义?

有意义,线程在wait或sleep下,不适用CPU。可以被其他线程利用。

工作线程数是不是设置越大越好?

不是

工作线程数(线程池中线程数量)设置多少合适?

创建线程的方式?

  • extend Thread
  • implement Runnable Override run() and new Tread(Runnable r).start()
  • implement Callable Override call() and FutureTask
  • ThreadPool
  • new Tread(lamda).start()

线程6种状态:

  • NEW(新建状态) 线程刚创建,还没有启动 -> new Thread()
  • RUNNABLE (可运行状态) 可运行状态,有线程调度器可以安排执行 -> new Thread().start()
    • READY (准备状态)
    • RUNNING (可运行状态)
  • WAITING(等待状态) 等待被唤醒
  • TIMED WAITING(间隔时间) 隔一段时间后自动唤醒
  • BLOCKED(阻塞状态) 被阻塞,正在等待锁
  • TERMINDTED(结束状态) 线程结束

interrupt”打断“线程:

  • interrupt() 打断某个线程(设置标志位)
  • isInterrupted() 查询某线程是否被打断过(查询标志位)
  • static interrupt() 查询当前线程是否被打断过,并重置打断标识

如何优雅的结束线程:

  • 自然结束
  • stop()暴力停止线程;[不推荐使用,原因:i.可能使一些清理工作得不到完成;II.对锁定对象进行'解锁',数据得不到同步处理,出现数据不一致]。
  • 使用volatile变量标识终止正常运行的线程 + 抛异常法/Return法 [不能准确控制停止时间,如果遇到sleep()、wait()需等待]。
  • 使用interrupt()与interruptted()/isinterrupted()结合+抛异常法/Return法;[推荐异常法,异常可以上抛,异常信息可以传播,但不能准确控制停止时间]

并发编程三大特性:

可见性 :

线程之间变量的可见性,例如Volatile、Synchronized 或某些语句触发内存缓存同步刷新(System.out.println(),它底层用到了Synchronized)。

  • 有序性
  • 原子性

Volatile:

  • 可见性:共享变量的变更能即时可见,原因:工作内存中新值能立即同步到主内存的规则
  • 有序性:禁止指令重排序优化,原因:使用内存屏障。
  • Volatile修饰引用类型(包括数组)只能保证引用本身的可见性, 不能保证内部字段的可见性

CPU的三级缓存:

CPU的缓存行:

  • 概念:CPU读取内存数据时并非一次只读一个字节,而是会读一段64字节长度的连续的内存块(chunks of memory),这些块我们称之为缓存行(Cache line)。
  • 按块读取,程序局部性原来,可以提高效率,充分发挥总线CPU针脚等一次性读取更多数据的能力
  • 缓存行 64字节(B),原因:缓存行越大,局部性空间效率越高,但读写时间越长;反之..,最后折中值是64B
  • 缓存对齐写法优点
  • 伪共享 --> 通过缓存一致性

MESI 缓存一致性协议:

乱序:

什么会乱序?

为了提高效率

乱序存在的条件:

  • as-if-serial :不管怎么重排序,(单线程)程序的执行结果不能被改变。
  • 不影响单线程的最终一致性

对象的半初始状态:

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

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

相关文章

YOLOv10训练自己的数据集(图像目标检测)

目录 1、下载代码 2、环境配置 3、准备数据集 4、yolov10训练 可能会出现报错: 1、下载代码 源码地址:https://github.com/THU-MIG/yolov10 2、环境配置 打开源代码,在Terminal中,使用conda 创建虚拟环境配置 命令如下&a…

Echarts各类图表常用配置项说明,附示例代码

前言: 哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享【 Echarts各类图表常用配置项说明 】,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家&#xff0…

剖析影响大米码垛机性能的关键因素

在现代化粮食加工产业链中,大米码垛机以其高效、精准的自动化操作,成为提升生产效率、降低劳动强度的得力助手。然而,要想充分发挥大米码垛机的性能优势,我们必须深入了解影响其性能的关键因素。星派将深入剖析这些关键因素&#…

Vue的学习(6.20)

一、Vue的特点 1.采用组件化模式(xxx.vue包含htmlcssjs) 2.声明式编码,编码人员无需直接操作DOM,提高开发效率 3.使用虚拟DOM优秀的DIFF算法(DIFF是用于新旧虚拟DOM的比较),尽量复用DOM节点 …

数学建模理论学习:线性规划模型

三要素:目标函数、约束条件(s.t.)、决策变量(x) 目标函数:z ax1 bx2 cx3 ... 其中c为一个序列,从左到右依次从x1到xn的系数 解决下面的线性规划问题: % 目标函数系数&#xf…

人工智能指数报告

2024人工智能指数报告(一):研发 前言 全面分析人工智能的发展现状。 从2017年开始,斯坦福大学人工智能研究所(HAI)每年都会发布一份人工智能的研究报告,人工智能指数报告(AII&…

java收徒 java辅导 java试用期辅导 java零基础学习

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末报名辅导🌟 感兴趣的可以先收藏起来,还有大家…

全面升级,票据识别新纪元:合合信息TextIn多票识别2.0

票据识别 - 自动化业务的守门员 发票、票据识别,是OCR技术和RPA、CMS系统结合的一个典型场景,从覆盖率、覆盖面的角度来说,应该也是结合得最成功的场景之一。 产品简介 国内通用票据识别V2.0(简称“多票识别2.0”)是…

顶级管理者的新视角:管理状态而非时间

在快节奏的商业环境中,时间管理常被看作是提升效率和效果的关键因素。然而,对于顶级管理者来说,仅仅管理时间可能并不足够。一个更深层、更全面的管理方式——管理状态,正在成为新的趋势。在这篇文章中,我们将探讨为什…

Flutter 项目设置 Flutter 版本

即便使用了 fvm 设置了版本,AdroidStudio Setting 中如果不修改路径,Editor 依然会编译错误。目前还没看懂如何通过命令、文件来记录AdroidStudio Setting中的设置。 fvm list 来查看 flutter 路径:

【每天学会一个渗透测试工具】AppScan安装及使用指南

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 https://www.hcl-software.com/appscan AppScan是一种综合型漏洞扫描工具,采用SaaS解决方案,它将所以…

神经网络学习3-卷积层

膨胀卷积,也被称为空洞卷积或扩张卷积,是一种特殊的卷积运算,它在标准卷积的基础上引入了一个额外的超参数,即膨胀率(dilation rate)。这个超参数决定了在卷积核的元素之间插入多少额外的空间。通过这种方式…

HTTP!!!

HTTP 一 : 请求报文1.2 : 首行1.3 :请求头(header)1.4 : 空行1.5 : 正文 body 二: 响应报文2.2 : 首行 三 : URL 一 : 请求报文 一个HTTP 请求报文, 分成四个部分 首行 GET https://cn.bing.com/?FORMZ9FD1 HTTP/1.1请求头(header)空行正文(body) 1.2 : 首行 首行又分为三个…

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

C#开发-集合使用和技巧&#xff08;八&#xff09;集合中的排序Sort、OrderBy、OrderByDescending List<T>.Sort()方法签名使用场景示例升序实现效果 降序实现效果 IEnumerable<T>.OrderBy()方法签名使用场景示例实现效果 Enumerable<T>.OrderByDescending()…

动态网页制作技术

动态网页制作技术是一种利用脚本语言、数据库和服务器端程序来生成动态内容的网页技术。以下是常用的动态网页制作技术&#xff1a; 1.PHP&#xff1a;PHP是一种广泛使用的服务器端脚本语言&#xff0c;可以嵌入到HTML中&#xff0c;用于生成动态网页内容。它可以与各种数据库进…

FuTalk设计周刊-Vol.033

&#x1f525;AI漫谈 热点捕手 1、Stable Video Diffusion —— Stable Diffusion 推出的 AI 生成视频模型 Stable Video Diffusion 也是开源的&#xff0c;可以免费下载部署。支持文本/图片生成视频&#xff0c;最高支持 576*1024 分辨率 25 帧。 链接https://huggingface.…

APP开发需要多少钱?定制开发智慧指南

在移动互联网飞速发展的今天&#xff0c;APP已经成为人们日常生活和工作中不可或缺的一部分。那么&#xff0c;开发一款 APP 到底需要多少钱呢&#xff1f;APP 开发的费用因人而异&#xff0c;不同的开发公司、不同的开发团队、不同的项目需求&#xff0c;都会导致开发费用有所…

植物大战僵尸杂交版(极速下载,解锁全部植物,存档,只需要两分钟!!)

文章目录 下载夸克网盘百度网盘gitee下载压缩包/gitee拉取 安装解锁全部植物游戏技巧友情提示游戏背景(可不阅) 更多相关内容可查看 不说废话&#xff0c;先玩起来 下载 夸克网盘 有夸克网盘会员的直接用夸克网盘下载 原创作者&#xff1a;潜艇伟伟迷 B站地址&#xff1a;h…

落地灯哪个品牌最好?五款护眼大路灯汇总分享!

落地灯哪个品牌最好&#xff1f;要说我成为测评博主的职业生涯以来感触最深的&#xff0c;应该就是在选购各类家电是一定要亲身实践之后才能够分辨产品的好坏&#xff0c;大路灯也是如此&#xff0c;目前市面上的大路灯外观几乎都大同小异&#xff0c;但很多品牌在宣传方面做的…

Salia PLCC cPH2 远程命令执行漏洞(CVE-2023-46359)

漏洞描述 Salia PLCC cPH2 v1.87.0 及更早版本中存在一个操作系统命令注入漏洞&#xff0c;该漏洞可能允许未经身份验证的远程攻击者通过传递给连接检查功能的特制参数在系统上执行任意命令。 产品界面 fofa语法 "Salia PLCC" POC GET /connectioncheck.php?ip1…