JAVAEE初阶 多线程基础(四)

join的知识补充,线程的状态和线程安全

    • 一.多线程完成运算操作
    • 二.多线程代码的变换
      • 2.1 转换成串行执行
    • 三.join的参数
    • 四.获取线程的引用
      • 4.1用this方法获取实例
      • 4.2 用currentThread获取实例
    • 五.线程的状态
    • 六.线程安全

一.多线程完成运算操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以发现,多线程并行比单线程的速度快1倍左右,所以多线程的效率还是远远高于单线程

在这里插入图片描述

二.多线程代码的变换

2.1 转换成串行执行

在这里插入图片描述

在这里插入图片描述

三.join的参数

在这里插入图片描述

(1) 第一个参数:死等,可能会导致程序卡住,无法处理后续逻辑
(2) 有上限时间的等待,上限时间到了之后,就不再等
(3) 设置一个ns级别的等待。

四.获取线程的引用

4.1用this方法获取实例

在这里插入图片描述
在这里插入图片描述

4.2 用currentThread获取实例

在这里插入图片描述
在这里插入图片描述

五.线程的状态

1.NEW 创建Thread对象
2.Runnable 就绪状态,随时到CPU执行或者正在CPU上执行
3.Terminated Thread对象还存在,但是线程内部执行完毕
4.Timed_waiting 指定时间的阻塞,到达一定时间后解除阻塞
5.waiting 不带时间的阻塞,满足一定条件解除阻塞,join和wait会进入这种状态。
6.Blocked 带有锁竞争

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六.线程安全

在这里插入图片描述
在这里插入图片描述

两个线程进行的时候为什么count最终是63755呢?

我们会有三步

1.load 将内存中的数据读取到寄存器上
2.add 将寄存器内部的值+1
3.save 将寄存器上的值放回到内存中

下面是几种状态
在这里插入图片描述
在这里插入图片描述
结论可以得到
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java核心知识点整理大全19-笔记

目录 14.1.5.2. MemStore 刷盘 全局内存控制 MemStore 达到上限 RegionServer 的 Hlog 数量达到上限 手工触发 关闭 RegionServer 触发 Region 使用 HLOG 恢复完数据后触发 14.1.6.HBase vs Cassandra 15. MongoDB 15.1.1. 概念 15.1.2. 特点 16. Cassandra 16.1.1…

MySQL-02-InnoDB存储引擎

实际的业务系统开发中,使用MySQL数据库,我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构,下面我们介绍下InnoDB存储引擎相关的知识点。 1-Innodb体系架构 InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一…

1146:吃糖果(C语言)

题目描述 HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢连续两次吃一样的糖果,喜欢先吃一颗A种类的糖果,下一次换一种口味,吃一颗B种类的糖果,这样&…

GPT还远远不是真正的智能

GPT是一个基于深度学习的自然语言处理模型,它可以生成逼真的文本。虽然GPT在生成文本方面取得了显著的进展,但它并不具备真正的智能。GPT是通过训练模型来学习语言模式,它不具备理解、推理、判断和主动学习的能力。它只是根据已有的语料库生成…

Go 中切片(Slice)的长度与容量

切片长度与容量在 Go 中很常见。切片长度是切片中可用元素的数量,而切片容量是从切片中第一个元素开始计算的底层数组中的元素数量。 Go 中的开发者经常混淆切片长度和容量,或者对它们不够了解。理解这两个概念对于高效处理切片的核心操作,比…

天鹅湖国家旅游度假区 | 展柜OLED透明屏:创新展示提升互动体验

天鹅湖国家旅游度假区 | 展柜OLED透明屏 产品:一块55寸OLED透明屏嵌入玻璃安装 应用场景:用在天鹅湖国家旅游度假区——三门峡城市文化客厅展馆中的一个透明展示柜,用一块55寸OLED透明屏嵌入展示柜的玻璃,让观众即可以看到展柜里…

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。(利用原表结点空间)

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。 (利用原表结点空间) 比如现在要将下面两个链表合并,这里是要求利用原表空间 我们先创建一个辅助的链表L3,用p和q分别标记L1和L2的数据元素&…

​无人机石油管道巡检方案新亮点:灵活准确又高效

在当前石油工业的安全管理中,无人机技术逐渐成为一种不可或缺的工具。随着我国油气管道里程的持续增长,确保这些关键基础设施的安全运行变得越来越重要。传统的巡检方法已经无法满足现代油气行业的需求,而无人机石油管道巡检技术的应用提供了…

在CI/CD中使用submodule

背景信息 客户的submodule使用的是ssh协议拉取 前置操作 gitlab添加子模块 git clone ssh://gitkube.bdeet.top:2222/cicd/123.git cd 123/ ls -la git submodule add ssh://gitkube.bdeet.top:2222/approve/test-1.git git submodule add ssh://gitkube.bdeet.top:2222/mr…

oracle数据库备份2(expdp)

使用exp命令定时进行数据库备份的操作前面已经记录过: oralce数据库定时备份 下面记录下使用更加高效的expdp命令和impdp,这两个命令同样是用来做数据库备份和还原的,但速度更快,效率更高,缺点是只能用在服务器端进行…

企业为什么需要工作流自动化?

每一家企业都常常面临这些困扰:业务流程繁琐,工作人员每天花费大量的时间精力用于处理重复性的工作、审批流程复杂,开展工作前要经历层层审批,导致客户需求不能及时满足。想要打破僵局可以借助CRM系统的工作流自动化,什…

数学加速器:Python numpy.add函数全解读

更多Python学习内容:ipengtao.com Numpy是Python中用于科学计算的重要库之一,而numpy.add函数是其众多功能强大的函数之一。在本文中,将深入研究numpy.add函数的用法,通过丰富的示例代码,帮助大家更全面地理解和掌握这…

2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务

美国当地时间11月27日,一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会,已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目,下面就一起来瞧一…

亚马逊策略:通过影响者营销改造您的亚马逊商店

亚马逊卖家面临着从人群中脱颖而出的持续挑战 - 如果您是那些寻求变革性方法来接触目标受众、建立信任并将您的销售推向新高度的卖家之一,那么影响力营销就是您的答案。 您可能遇到过令人难以置信的成功故事,产品一夜之间流行起来,仅仅是因为…

基于oracle数据库的PLSQL编程以及存储过程的创建和使用

PL/SQL编程 declare begindbms_output.put_line(helloworld!);-- line表示换行 end;set serveroutput on; 开启打印输出 / 表示结束变量的声明与赋值 declarev_name varchar2(20) : 张三;v_sal number;v_addr varchar2(200); begin-- 直接赋值v_sal : 1111;-- 语句赋值selec…

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…

antd vue a-select 下拉框位置偏移

问题 下拉框未固定 原因 select下拉框的定位是根据body定位 解决方法 在select 标签中添加: :getPopupContainer"(triggerNode) > (triggerNode.parentElement)" :getPopupContainer"(triggerNode) > (triggerNode.parentElement)"…

Vue3-Eslint配置代码风格

prettier风格配置 官网:https://prettier.io Eslint:代码纠错,关注于规范 prettier:专注于代码格式化的插件,让代码更加美观 两者各有所长,配合使用优化代码 生效前提: 1)禁用…

二十章多线程

概念 有很多工作是可以同时完成的,这种思想放在Java中被称为并发,并发完成每一件事被称为线程。 程序员可以在程序中执行多个线程,每一个线程完成一个功能//与其他线程并发执行,这种机制被称为多线程,并不算所有编程…

phpstudy安装redis

Redis 是一个开源的高性能键值存储数据库,广泛用于缓存、消息队列、会话管理和实时数据分析等应用场景。 使用 PHP Redis 扩展,你可以在 PHP 代码中使用一系列的函数来连接到 Redis 服务器,并执行各种操作,如设置和获取键值对、操…