当前位置: 首页 > news >正文

系列六、多线程集合不安全

一、多线程List集合不安全

1.1、List集合不安全案例代码

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下List集合不安全案例代码*/
public class NotSafeListMainApp {public static void main(String[] args) {List<String> list = new ArrayList<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {list.add(UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前list】:" + list);}, String.valueOf(i)).start();}}}

1.2、解决方法

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下List集合不安全解决案例代码*/
public class NotSafeListPlusMainApp {public static void main(String[] args) {// List<String> list = Collections.synchronizedList(new ArrayList<>());List<String> list = new CopyOnWriteArrayList<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {list.add(UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前list】:" + list);}, String.valueOf(i)).start();}}}

二、多线程HashSet集合不安全

2.1、HashSet集合不安全案例代码

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下HashSet集合不安全案例代码*/
public class NotSafeHashSetMainApp {public static void main(String[] args) {Set<String> hashSet = new HashSet<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {hashSet.add(UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前hashSet】:" + hashSet);}, String.valueOf(i)).start();}}}

2.2、解决方法

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下HashSet集合不安全解决案例代码*/
public class NotSafeHashSetPlusMainApp {public static void main(String[] args) {// Set<String> hashSet = Collections.synchronizedSet(new HashSet<>());Set<String> hashSet = new CopyOnWriteArraySet<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {hashSet.add(UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前hashSet】:" + hashSet);}, String.valueOf(i)).start();}}}

三、多线程HashMap集合不安全

3.1、HashMap集合不安全案例代码

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下HashMap集合不安全案例代码*/
public class NotSafeHashMapMainApp {public static void main(String[] args) {HashMap<String,Object> hashMap = new HashMap<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {hashMap.put(UUID.randomUUID().toString().substring(0, 1),UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前hashMap】:" + hashMap);}, String.valueOf(i)).start();}}}

3.2、解决方法

/*** @Author : 一叶浮萍归大海* @Date: 2023/11/20 12:38* @Description: 多线层环境下HashMap集合不安全解决案例代码*/
public class NotSafeHashMapPlusMainApp {public static void main(String[] args) {// Map<String,Object> hashMap = Collections.synchronizedMap(new HashMap<>());Map<String,Object> hashMap = new ConcurrentHashMap<>();for (int i = 1; i <= 30; i++) {new Thread(() -> {hashMap.put(UUID.randomUUID().toString().substring(0, 1),UUID.randomUUID().toString().toLowerCase().substring(0, 8).replaceAll("-", ""));System.out.println("【当前线程】:" + Thread.currentThread().getName() + ",【当前hashMap】:" + hashMap);}, String.valueOf(i)).start();}}}

相关文章:

系列六、多线程集合不安全

一、多线程List集合不安全 1.1、List集合不安全案例代码 /*** Author : 一叶浮萍归大海* Date: 2023/11/20 12:38* Description: 多线层环境下List集合不安全案例代码*/ public class NotSafeListMainApp {public static void main(String[] args) {List<String> list …...

MidJourney笔记(1)-入门

注册 MidJourney注册和使用方式,有点特别。在介绍注册之前,需要给大家先介绍Discord。 Discord是一家游戏聊天应用与社区,在国内用的人相对比较少,在国外用得比较多。 那MidJourney和Discord有什么关系呢? MidJourney是搭建在Discord上的一个人工智能程序,通过在Discord添…...

CRM系统定制开发价格

我们都知道&#xff0c;CRM系统对企业有着很大的帮助。但是市面上大多数CRM系统都是标准化的&#xff0c;无法满足那些产品线复杂&#xff0c;或者有着特殊需求的企业。这个时候&#xff0c;就需要对CRM系统进行二次开发。那么&#xff0c;CRM系统二次开发的价格是多少&#xf…...

Kubernetes实战(五)-pod之间网络请求实战

1 同namespace内pod网络请求 1.1 创建namespace ygq $ kubectl create namespace ygq namespace/ygq created 1.2 创建svc和deployment 在naemspace ygq下创建两个应用&#xff1a;nginx和nginx-test。 1.2.1 部署应用nginx $ cat nginx-svc.yaml apiVersion: v1 kind: …...

7年经验之谈 —— 如何高效的开展app的性能测试?

APP性能测试是什么 从网上查了一下&#xff0c;貌似也没什么特别的定义&#xff0c;我这边根据自己的经验给出一个自己的定义&#xff0c;如有巧合纯属雷同。 客户端性能测试就是&#xff0c;从业务和用户的角度出发&#xff0c;设计合理且有效的性能测试场景&#xff0c;制定…...

小程序action-sheet结合自定义tabbar显示

要实现此效果&#xff0c;遇到的问题&#xff1a;背景在电脑端调试的情况正常的情况下&#xff0c;手机端点击事件工单&#xff0c;返回回来的时候action-sheet卡住在屏幕上&#xff0c;点击遮罩层都不消失。更奇怪的是 这种情况并不是每次发生&#xff0c;而是有时候发生&…...

机器学习笔记 - 隐马尔可夫模型的简述

隐马尔可夫模型是一个并不复杂的数学模型,到目前为止,它一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。它成功地解决了复杂的语音识别、机器翻译等问题。看完这些复杂的问题是如何通过简单的模型得到描述和解决,我们会由衷地感叹数学模型之妙。 人类信息交流…...

iOS学习 --- Xcode 15 下载iOS_17.0.1_Simulator失败解决方法

1.去开发者官网下载安装包 https://developer.apple.com/download/all/?qiOS%2017 使用浏览器下载。 2.打开终端通过命令添加到xcode 命令如下&#xff1a; sudo xcode-select -s /Applications/Xcode.app(输入开始密码)xcodebuild -runFirstLaunch (等待一小会)xcrun simctl…...

多视图聚类论文阅读(二)

Deep multi-view semi-supervised clustering with sample pairwise constraints 基于样本对约束的深度多视图半监督聚类 1.1 提出的问题 提出问题&#xff1a; 多视图聚类技术多数方法都忽视了弱监督信息的重要性&#xff0c; 提出的解决方法 将自监督学习引入到了多视图…...

Docker在Centos7下的安装

1、卸载旧版本 执行如下指令对旧版本进行卸载&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 执行完毕后&#xff0c;如果输入docker version发现do…...

LLM大模型4位量化实战【GPTQ】

权重量化方面的最新进展使我们能够在消费类硬件上运行大量大型语言模型&#xff0c;例如 RTX 3090 GPU 上的 LLaMA-30B 模型。 这要归功于性能下降最小的新型 4 位量化技术&#xff0c;例如 GPTQ、GGML 和 NF4。 在上一篇文章中&#xff0c;我们介绍了简单的 8 位量化技术和出…...

安装keras、tensorflow

看起来你仍然面临SSL证书验证失败的问题。这可能是由于你的网络环境或代理设置引起的。你可以尝试以下几个步骤&#xff1a; 检查网络连接&#xff1a; 确保你的计算机能够正常访问互联网。 关闭代理&#xff1a; 如果你使用了代理&#xff0c;尝试暂时关闭它&#xff0c;然后…...

ffmpeg知识点整理

使用FFmepg进行视频转码、视频格式转换、图片提取等&#xff01;_ffmepg -c:v-CSDN博客 中文文档&#xff1a; ffmpeg 中文手册 (beandrewang.github.io) 笔记&#xff1a; 通用规则是&#xff0c;所有选项作用于其后边的第一个文件。因此&#xff0c;顺序是非常重要的&…...

Git 笔记之gitignore

解释为&#xff1a;git ignore 即&#xff0c;此类型的文件将会被忽略掉&#xff0c;从而不会进行管理 具体的模板可以从 GitHub 网站上来进行设置 GitHub - github/gitignore: A collection of useful .gitignore templates Common_gitignore: gitignoregithub开源项目&…...

【配置】Redis常用配置详解

文章目录 IP地址绑定设置密码 IP地址绑定 默认情况下&#xff0c;如果未指定 “bind” 配置指令&#xff0c;Redis 将监听服务器上所有可用的网络接口的连接。 可以使用 “bind” 配置指令来仅监听一个或多个选定的接口&#xff0c;后跟一个或多个 IP 地址 示例&#xff1a;bin…...

Linux(Ubuntu)安装JDK环境

系统环境 Ubuntu20.04 下载JDK压缩包 前往Oracle官网进行后续下载或单击下载JDK压缩包 下拉找到JDK8&#xff0c;在Linux板块下选择适配系统架构的压缩包文件(后缀为tar.gz)&#xff0c;系统架构可通过uname -m命令查看 安装JDK 安装环境通常放在/usr/local下&#xff0c;进入…...

OpenCV C++ 张正友相机标定【相机标定原理、相机标定流程、图像畸变矫正】

文章目录 3.1 标定原理3.2 相机标定流程步骤1:采集棋盘格图像,批处理(调整尺寸、重命名)步骤2:提取棋盘格内角点坐标步骤3:进一步提取亚像素角点信息在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)步骤4:相机标定--计算出相机内参数矩阵和畸变系数步骤5:畸变图像…...

SDL2 播放音频(MP4)

1.简介 这里引入FFmpeg库&#xff0c;获取音频流数据&#xff0c;然后通过FFmpeg将视频流解码成pcm原始数据&#xff0c;再将pcm数据送入到SDL库中实现音频播放。 2.FFmpeg的操作流程 注册API&#xff1a;av_register_all()构建输入AVFormatContext上下文&#xff1a;avform…...

WMS仓库管理系统库位功能

后端 &#xfeff;using Infrastructure.Attribute; using Model.Dto.WarehouseManagement; using Model.Page; using Model.WarehouseManagement; using Repository; using Service.Interface.WarehouseManagement; using SqlSugar;namespace Service.WarehouseManagement {[…...

vue2组件通信中的一些拓展(props,emit,ref父子双向传参)

说明 我上一篇文章中基本对vue所有的数据通信方法进行了一个整理归纳。 其实我并没有像传统的那样去罗列,比如父传子有props,ref,子传父为emit,兄弟用$bus等等。 因为在我的实际练习和业务开发中,props,emit,ref等可以实现父子数据互传,这里就涉及一个比较重要的编程思维,函…...

资源下载神器:5分钟掌握全平台媒体内容下载技巧

资源下载神器&#xff1a;5分钟掌握全平台媒体内容下载技巧 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾经遇到过…...

如何通过Play Integrity API完整检测Android设备安全状态

如何通过Play Integrity API完整检测Android设备安全状态 【免费下载链接】play-integrity-checker-app Get info about your Device Integrity through the Play Intergrity API 项目地址: https://gitcode.com/gh_mirrors/pl/play-integrity-checker-app 在移动应用生…...

如何用Akagi麻雀助手快速提升雀魂游戏水平:3个核心技巧

如何用Akagi麻雀助手快速提升雀魂游戏水平&#xff1a;3个核心技巧 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amat…...

黑苹果配置终极简化:OpCore Simplify三步搞定OpenCore EFI

黑苹果配置终极简化&#xff1a;OpCore Simplify三步搞定OpenCore EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗…...

KMS智能激活终极指南:5分钟搞定Windows和Office永久激活

KMS智能激活终极指南&#xff1a;5分钟搞定Windows和Office永久激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统未激活而烦恼吗&#xff1f;是否经常遇到Office提示"…...

第38天:SQL详解之DML

Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、基本查询与投影 1.1 查询所有列 1.2 投影与别名 二、数据筛选(WHERE 子句) 2.1 等值与比较筛选 2.2 多条件组合(AND / OR) 2.3 范围查询(BETWEEN) 2.4 CASE 表达式与…...

零售业的AI Agent:个性化推荐与库存管理

从零落地零售业AI Agent:打通个性化推荐与智能库存管理的全链路实践 副标题:技术栈:LangChain + 向量数据库 + 时序预测 + 多Agent协同,降本提效30%+的可落地方案 第一部分:引言与基础 1.1 摘要/引言 不知道你有没有过这样的体验:刚在电商平台买了一罐婴儿奶粉,接下来…...

2026固态电池冬季续航实测:零下20℃仍跑600公里?

2026年固态电池量产车型对冬季续航提升的实际数据与技术解析 针对2026年固态电池量产车型在冬季续航方面的表现&#xff0c;目前尚无公开的、基于大规模量产车型的完整冬季实测数据。然而&#xff0c;结合固态电池的技术原理、已发布的实验室及小规模测试数据&#xff0c;以及…...

CMU localPlanner算法深度解析:从‘采样路径’到‘最优选择’的完整决策逻辑与代码实现

CMU localPlanner算法深度解析&#xff1a;从路径采样到最优决策的工程实现 在移动机器人导航领域&#xff0c;路径规划算法的实时性与可靠性直接决定了系统的整体性能。CMU团队开源的localPlanner以其独特的"采样-评估-选择"架构&#xff0c;在复杂环境中展现出卓越…...

基于STM32H750XBH6开发板调试LwIP裸机程序

目录 1 前言 2 正点原子STM32H750XBH6阿波罗开发板介绍 3 配置和调试 3.1 CubeMX配置 3.2 代码修改 1 前言 LwIP 是物联网 / 嵌入式领域使用最广的开源 精简版TCP/IP 协议栈,STM32、ESP32、国产 MCU 全都用它,对于嵌入式 / 物联网初学者来说,亲手调试 LwIP 裸机程序(无操作…...