Java后端八股-------并发编程

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图中的 synchronized方法如果没有锁,那么可能会有超卖,数据错误等情况。
加锁之后会按顺序售卖。
synchronized的底层是monitor。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
线程没有竞争关系的时候,引入了轻量级锁,当需要处理竞争关系的时候一定要用到重量级锁(线程的对象锁)。

在这里插入图片描述
在这里插入图片描述
mark word中重量级锁时,ptr_to_heavyweight_monitor是一个指向monitor的指针。
在这里插入图片描述
cas交换是用来保证原子操作的.
在这里插入图片描述
👆cas会做交换,交换地址值,这样其他线程就无法获取锁,但是自己的线程内可以多次获取锁(没有竞争关系时)。
在这里插入图片描述

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

在这里插入图片描述
在Java中,轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)是Java虚拟机(JVM)内部实现的锁优化技术,它们旨在提高多线程环境下锁的性能。这些锁策略是JVM自动管理的,通常不需要开发者手动开启或关闭。

在这里插入图片描述线程里面的工作内存不存在线程安全的问题,共享变量副本是主内存中共享变量的副本,需要通过JMM控制进行save和load在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
👆在上面这段代码中,线程1修改的stop为true,线程2是能读到的,但是线程3while循环却不停止。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JVM优化导致的重排序。
实验数据
在这里插入图片描述
在这里插入图片描述
👆这个可以解决问题
在这里插入图片描述
👆这个不能组织x在y后执行,不能解决问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AQS的实现类当中,公平锁和非公平锁都有实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一把锁,获取效率很低
在这里插入图片描述
每个hash值都有一把锁。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Linked效率高一点(两把锁),因为可以分别控制输入输出。而array只有一把锁,输入输出同时控制。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
👆可以一直创造线程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
使用线程池子来进行多线程的复用就可以达到上图中右边的效果。在这里插入图片描述
上图为上上图中利用线程池执行的线程逻辑代码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图中保存搜索历史记录使用的异步调用。
taskExecutor是一个已经定义的线程池。
在这里插入图片描述
在这里插入图片描述

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

ThreadLocal中线程之间数据是不互通的。通过以上样例可以看出。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记(20)

可变参数 输入的参数数量不确定 底层就是把输入的参数放进一个数组里 只能写一个可变参数如果还有其他形参,可变参数要放在最后写 可变参数在底层就是一个数组 Collections Addall shuffle 练习 package exercise;import java.util.ArrayList; import java.util.C…

递增四元组

解法: 首先都可以想到dp[i]:第i个元素结尾的递增四元组有dp[i]个 然后发现有一组数据:2,3,6,1,5,8。会出现6结尾和5结尾的递增三元组,也就是未来的决策受过去影响,专业的说就是有后效性。需要强化约束条件&#xff0…

1.2 编译型语言和解释型语言的区别

编译型语言和解释型语言的区别 通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令&…

使用gimp制作头像

1.裁剪图像 (1)用GIMP打开图像。 (2)在工具箱中选中剪裁工具。 (3)在工具箱下边的工具选项中,勾选 固定→宽高比,并在下面的数值框中输入1:1。 (4)在图像中…

ginblog博客系统/golang+vue

ginblog博客系统 前台: 后台: Gitee的项目地址,点击进入下载 注意: 数据库文件导入在model里面,直接导入即可。 admin和front前后台系统记住修改https里的地址为自己的IP地址: front同上。

Springboot+vue的大学生选修选课系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的大学生选修选课系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(control…

显卡基础知识及元器件原理分析

显卡应该算是是目前最为火热的研发方向了,其中的明星公司当属英伟达。 当地时间8月23日,英伟达发布截至7月30日的2024财年第二财季财报,营收和利润成倍增长,均超市场预期。 财报显示,第二财季英伟达营收为135.07 亿美…

第十四届蓝桥杯JavaB组省赛真题 - 阶乘求和

/ 10^9考虑前九位,% 10^9保留后9位 解题思路: 求获取结果的后九位数字,需要对10^9取余,因为202320232023这个数字的阶乘太大,必须要减少计算量,因为当一个整数乘以10^9后对其取余,那么结果都为0。 所以我…

模拟B\S服务器(扩展知识点)

3.2 模拟B\S服务器(扩展知识点) 模拟网站服务器,使用浏览器访问自己编写的服务端程序,查看网页效果。 案例分析 准备页面数据,web文件夹。 复制到我们Module中,比如复制到day08中 我们模拟服务器端,ServerSocket类…

【C++ leetcode】双指针问题

1. 611. 有效三角形的个数 题目 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 题目链接 . - 力扣(LeetCode) 画图 和 文字 分析 判断是否是三角形要得到三边,由于遍历三边要套三层循环&#x…

VC++ error C1001: 内部编译器错误 c\error.h”,第 1291 行) 原因和解决

原因是使用模板时实现方法没写分号 #include <iostream>template <class T> class A { public:A() {};~A() {};void GetName() {return}; };int main(int argc, char* argv[]) {return 0; }

ARM 点灯

实现三个LED灯灰 .text .global _start _start: 使能GPIOE GPIOF的外设时钟 RCC_MP_AHB4ENSETR的第[4][5]设置为1即可使能GPIOE GPIOF时钟 LDR R0,0X50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x3<<4) …

Python Flask框架 -- 加载静态文件

在项目中&#xff0c;一般都会把静态文件放在 static 目录下&#xff0c;如 images、css、js 等&#xff0c;html 放在 templates 目录下。 .py&#xff1a; from flask import Flask, render_templateapp Flask(__name__)app.route(/static) def static_demo():return rend…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(时间滑动选择器弹窗)

以24小时的时间区间创建时间滑动选择器&#xff0c;展示在弹窗上。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块功能依赖UI的执行上下文&#xff0c;不可在UI上下文不明确的地方使用&…

matlab simulink 二自由度机器手臂

1、内容简介 略 73-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

SQLiteC/C++接口详细介绍之sqlite3类(十六)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十五&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍之sqlite3类&#xff08;十七&#xff09;&#xff08;未发表&#xff09; 50.sqlite…

MySQL数据库-MySQL基础-下篇-函数、约束、多表查询、事务

文章目录 函数一、字符串函数练习 二、数值函数三、日期函数四、流程函数总结 约束概述约束演示外键约束概念语法删除/更新行为 总结 多表查询多表关系一对多&#xff08;多对一&#xff09;多对多一对一 多表查询概述内连接外连接自连接*联合查询-union, union all子查询标量子…

LeetCode # 199. 二叉树的右视图

199. 二叉树的右视图 题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3…

js实现hash路由原理

一、简单的上下布局&#xff0c;点击左侧导航&#xff0c;中间内容跟对变化&#xff0c;主要技术使用js检测路由的onhashchange事件 效果图 二、话不多说&#xff0c;直接上代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"…

操作系统面经-什么是操作系统?

通过以下四点可以概括操作系统到底是什么&#xff1a; 操作系统&#xff08;Operating System&#xff0c;简称 OS&#xff09;是管理计算机硬件与软件资源的程序&#xff0c;是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 &#xff0c;主要用于管理计算机硬…