并发(11)

news2024/11/13 18:09:08

目录

71.ConcurrentHashMap JDK1.7说说其put的机制?

72.ConcurrentHashMap  JDK1.7是如何扩容的?

73.ConcurrentHashMap  JDK1.8实现的原理是什么?

74.ConcurrentHashMap  JDK1.8是如何扩容的?

75.ConcurrentHashMap  JDK1.8链表转红黑树的时机是什么?临界值为什么是8?

76.ConcurrentHashMap  JDK1.8时如何进行数据迁移的?

77.先说说并发集合中Fail-fast机制?

78.CopyOnWriteArrayList实现原理?

79.弱一致性的迭代器原理是怎么样的?

80.CopyOnWriteArrayList为什么并发安全性能比Vector好?


71.ConcurrentHashMap JDK1.7说说其put的机制?

1.计算key的hash值

2.根据hash值找到Segment数组中的位置j;ensureSegment(j)对Segment[j]进行初始化(Segment内部是由数组+链表组成的)

3.插入新值到槽s中

72.ConcurrentHashMap  JDK1.7是如何扩容的?

rehash(注:Segment数组不能扩容,扩容Segment数组某个位置内部的数组HashEnert<K,V>[]进行扩容)

73.ConcurrentHashMap  JDK1.8实现的原理是什么?

在JDK1.7之前,ConcurrentHashMap是通过分段锁机制实现的,所以其最大并发度受Segment的个数限制。因此,在JDK1.8中,ConcurrentHashMap的实现原理摒弃了这种设计,而是选择了与HashMap类似的数组+链表+红黑树的方式实现,而加锁则采用CAS和synchronized实现。

简言之:数组+链表+红黑树,CAS。

74.ConcurrentHashMap  JDK1.8是如何扩容的?

tryPresize,扩容也是做翻倍扩容的,扩容后数组容量为原来的2倍。

75.ConcurrentHashMap  JDK1.8链表转红黑树的时机是什么?临界值为什么是8?

size=8,log(N)

而树化的临界值选择8是通过泊松分布算出的,结点个数为8出现的几率是亿分之6。

76.ConcurrentHashMap  JDK1.8时如何进行数据迁移的?

transfer,将原来的tab数组的元素迁移到新的nextTab数组中。

77.先说说并发集合中Fail-fast机制?

快速失败

在并发编程中,Fail-fast机制是一种处理线程安全的机制,主要用于检测并发集合中的迭代器是否安全。

Fail-fast机制的核心思想是:当多个线程同时对集合进行修改操作(例如添加、删除元素)时,迭代器会快速失败,抛出ConcurrentModificationException异常。这个机制的目的是为了防止迭代器在遍历集合的过程中,由于集合被其他线程修改而导致不可预知的行为。

Fail-fast机制的实现原理通常是在迭代器创建时,对集合进行一次快照操作,然后在这个快照上生成迭代器。在迭代过程中,如果集合被其他线程修改,由于快照和当前集合的不一致性,迭代器会立即失败,抛出异常。

Fail-fast机制是一种相对简单且有效的线程安全保障方式,但也有其局限性。例如,它无法处理迭代过程中元素自然增删的情况,因为这种情况并不会触发ConcurrentModificationException异常。此外,由于Fail-fast机制使用快照技术,所以可能会浪费一些系统资源。

在实际应用中,除了Fail-fast机制外,还有其他一些线程安全保障方式,如使用同步块、并发包(如java.util.concurrent包中的集合类)等。开发者可以根据具体需求选择合适的线程安全保障方式。

78.CopyOnWriteArrayList实现原理?

属性中有一个可重入锁,用来保证线程安全访问,还有一个Object类型的数组,用来存放具体的元素。当然,也使用到了反射机制和CAS来保证原子性的修改lock域。

79.弱一致性的迭代器原理是怎么样的?

80.CopyOnWriteArrayList为什么并发安全性能比Vector好?

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

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

相关文章

Maven之私服

1 介绍 团队开发现状分析私服是一台独立的服务器&#xff0c;用于解决团队内部的资源共享与资源同步问题Nexus Sonatype公司的一款maven私服产品 下载地址&#xff1a;https://help.sonatype.com/repomanager3/download win版安装包&#xff1a;https://pan.baidu.com/s/1wk…

【tensorflowflutterweb】机器学习模型怎样用到前端上(未写完)

书接上回 在上一章 我们谈了怎么根据项目需求构建一个简单的机器学习模型。 ​​​​​​ ​​​​​​【tensorflow&flutter】自己写个机器学习模型用在项目上&#xff1f;-CSDN博客文章浏览阅读852次&#xff0c;点赞22次&#xff0c;收藏15次。【tensorflow&flutter…

结队编程 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 某部门计划通过结队编程来进行项目开发,已知该部门有 N 名员工,每个员工有独一无二的职级,每三个员工形成一个小组进行结队编程,结队分组规则如下: 从部门中选出序号分别为 i、j、k 的3名员工,他们的职级分别为 level[…

在docker中搭建部署clickhouse

因需要给网关日志拉取并存储供数据分析师分析&#xff0c;由于几十个项目的网关请求数量很大&#xff0c;放在mysql不合适&#xff0c;MongoDB不适合分析&#xff0c;于是准备存放在clickhouse&#xff0c;clickhouse对于读写支持也比较友好&#xff0c;说干就干 1、在服务器中…

6.综合案例

1. 需求描述 1.1 显示所有员工信息 URI:emps 请求方式:GET 显示效果 1.2 添加操作- 去往添加页面 显示添加页面: URI:emp 请求方式:GET 显示效果 1.3 添加操作- 添加员工 添加员工信息: URI:emp 请求方式:POST 显示效果:完成添加, 重定向到 list 页面。 1.4…

Java-网络爬虫(一)

文章目录 前言一、网络爬虫1. 介绍2. 爬虫协议3. 法律法规 二、相关知识1. HttpClient2. Jsoup 三、综合案例1. 案例一2. 案例二 四、总结 前言 下篇&#xff1a;Java-网络爬虫(二) 在大数据时代&#xff0c;信息采集是一项重要的工作&#xff0c;而互联网中的数据是海量的&am…

2024年第01周农产品价格报告

一、摘要 农产品价格监测主要涉及对畜禽类产品、水产品、蔬菜类产品、水果类产品的价格&#xff0c;以周为单位&#xff0c;进行变化情况的数据监测。其中&#xff0c;蔬菜类产品共18种&#xff0c;分别为大白菜、西红柿、黄瓜、青椒、芹菜、土豆、白萝卜、茄子、豆角、胡萝卜…

和可被K整除的子数组(Java详解)

目录 一、题目描述 二、题解 思路分析 具体实现 完整代码 一、题目描述 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例&#xff1a; 输入&#…

MYSQL学习之buffer pool的理论学习

MYSQL学习之buffer pool的理论学习 by 小乌龟 文章目录 MYSQL学习之buffer pool的理论学习前言一、buffer pool是什么&#xff1f;二、buffer pool 的内存结构三、buffer pool 的初始化和配置初始化配置 四、buffer pool 空间管理LRU淘汰法冷热数据分离的LRU算法1.引入库2.读入…

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…

RT-Thread 内核基础(一)

内核基础 包括&#xff1a;内核简介、系统的启动流程及内核配置的部分内容&#xff0c;为后面的章节奠定基础。 RT-Thread 内核介绍 内核是一个操作系统的核心&#xff0c;是操作系统最基础也最重要的部分。它负责管理系统的线程、线程间通信、系统时钟、中断及内存等。 下…

使用tailscale访问对端局域网上的其他设备

当tailscale客户端应用程序直接安装在组织中的每个客户端、服务器和虚拟机上时&#xff0c;Tailscale 效果最佳。这样&#xff0c;流量就会被端到端加密&#xff0c;并且无需配置即可在物理位置之间移动机器。 但是&#xff0c;在某些情况下&#xff0c;你不能或不想在每台设备…

AI人工智能学习路线图

学习人工智能 AI 的路线通常包括以下几个步骤&#xff1a;了解人工智能的基本概念和历史&#xff0c;包括机器学习、神经网络、深度学习等技术。学习数学基础知识&#xff0c;包括线性代数、微积分、概率论和统计学等。学习编程基础知识&#xff0c;包括 Python、C 等编程语言。…

[嵌入式AI从0开始到入土]10_yolov5在昇腾上应用

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

Milvus启动和调试 0 前言1 Milvus启动【问题描述】出现Aborted问题【问题分析】【解决方法】安装Pulsar服务执行单机启动命令解决监听端口号 2 Milvus调试编写launch.json验证单例调试成功 3 遇到的问题汇总问题1问题2:Permission denied 0 前言 由于Milvus官方文档只提及如何…

VX小程序Burp抓包

方法有很多&#xff0c;工具也各有差异&#xff0c;主要是学代理流量的思路 Burp流量代理工具小程序 一、Burp证书导入 1、开启代理 开启浏览器的代理&#xff0c;火狐推荐FoxyProxy&#xff0c;Google推荐SwitchyOmega&#xff0c;设置代理为127.0.0.1:8080。 2、下载证书…

[C#]Onnxruntime部署Chinese CLIP实现以文搜图以文找图功能

【官方框架地址】 https://github.com/OFA-Sys/Chinese-CLIP 【算法介绍】 在当今的大数据时代&#xff0c;文本信息处理已经成为了计算机科学领域的核心议题之一。为了高效地处理海量的文本数据&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术应运而生。而在诸多N…

性能分析与调优: Linux 使用ELRepo升级CentOS内核

目录 一、实验 1.环境 2.agent 服务器使用ELRepo升级CentOS内核 二、问题 1. RHEL-7, SL-7 或者 CentOS-7系统如何安装ELRepo 2.RHEL-8或者RHEL-9系统如何安装ELRepo 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系…

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言&#xff1a;M1型号无人机不仅提供了yolo进行物体识别&#xff0c;也增加了基于opencv的人脸识别功能包&#xff0c;仅需要启动摄像头和识别节点即可 链接: 源码链接 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错&#…

Maven在java中的实现(对java的项目进行打包)

前言: 在前面的文章中我们了解了Maven的作用,并在自己的电脑上安装配置好了Maven,也成功的在IDEA中添加了Maven,但是具体的实现还是有一些些小问题,那么接下来,我将带着大家对Java项目进行一次打包,系统的完成一次,并在途中解决一下会出现的问题. 我以图片中选中的这个包为例,…