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

集合类不安全问题

集合
ArrayList不是线程安全类,在多线程同时写的情况下,会抛出java.util.ConcurrentModificationException异常
解决办法:
1.使用Vector(ArrayList所有方法加synchronized,太重)
2.使用Collections.synchronizedList()转换成线程安全类
3.使用java.concurrent.CopyOnWriteArrayList(推荐)
通过写时复制来实现读写分离,比如其add()方法,就是先复制一个新数组,长度为原数组长度+1,然后将新数组最后一个元素设为添加的元素

package com.xd.thread;import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;public class ListNoSafeDemo {public static void main(String[] args) {mapDemo();}private static void mapDemo() {
//        Map<String,String> map = new HashMap<>();Map<String,String> map = new ConcurrentHashMap<>();for (int i = 1; i < 10; i++) {new Thread(()->{map.put(Thread.currentThread().getName(),UUID.randomUUID().toString().substring(0,6));System.out.println(Thread.currentThread().getName()+"\t"+map);},String.valueOf(i)).start();}}private static void setDemo() {//Set<String> set = new HashSet<>();Set<String> set = new CopyOnWriteArraySet<>();for (int i = 1; i < 10; i++) {new Thread(()->{set.add(UUID.randomUUID().toString().substring(0,6));System.out.println(Thread.currentThread().getName()+"\t"+set);},String.valueOf(i)).start();}}private static void listDemo() {//List<String> list = new ArrayList();List<String> list = new CopyOnWriteArrayList();for (int i = 0; i < 10; i++) {new Thread(()->{list.add(UUID.randomUUID().toString().substring(0,6));System.out.println(Thread.currentThread().getName() +"\t" + list);},String.valueOf(i)).start();}}}

相关文章:

集合类不安全问题

ArrayList不是线程安全类&#xff0c;在多线程同时写的情况下&#xff0c;会抛出java.util.ConcurrentModificationException异常 解决办法&#xff1a; 1.使用Vector&#xff08;ArrayList所有方法加synchronized&#xff0c;太重&#xff09; 2.使用Collections.synchronized…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之上传头像和新增收货地址

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f680;1.上传头像 -持久…...

AI知识库和全文检索的区别

1、AI知识库的作用 AI知识库是基于人工智能技术构建的智能系统&#xff0c;能够理解、推理和生成信息。它的核心作用包括&#xff1a; 1.1 语义理解 自然语言处理&#xff08;NLP&#xff09;&#xff1a;AI知识库能够理解用户查询的语义&#xff0c;而不仅仅是关键词匹配。 …...

20240817 联想 笔试

文章目录 1、选择题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:Linux开发工程师 题型:20 道选择题,2 道编程题 1、选择题 1.1 有如下程序,程序运行的结果为 (D) #include <stdio.h>int main() {int k = 3...

IntelliJ IDEA 安装与使用完全教程:从入门到精通

一、引言 在当今竞争激烈的软件开发领域&#xff0c;拥有一款强大且高效的集成开发环境&#xff08;IDE&#xff09;是开发者的致胜法宝。IntelliJ IDEA 作为 JetBrains 公司精心打造的一款明星 IDE&#xff0c;凭借其丰富多样的功能、智能精准的代码提示以及高效便捷的开发工…...

【JVM详解一】类加载过程与内存区域划分

一、简介 1.1 概述 JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关…...

250207-MacOS修改Ollama模型下载及运行的路径

在 macOS 上&#xff0c;Ollama 默认将模型存储在 ~/.ollama/models 目录。如果您希望更改模型的存储路径&#xff0c;可以通过设置环境变量 OLLAMA_MODELS 来实现。具体步骤如下&#xff1a; 选择新的模型存储目录&#xff1a;首先&#xff0c;确定您希望存储模型的目标目录路…...

Win10 部署llama Factory 推荐教程和遇到的问题

教程 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 大模型微调&#xff01;手把手带你用LLaMA-Factory工具微调Qwen大模型&#xff01;有手就行&#xff0c;零代码微调任意大语言模型_哔哩哔哩_bilibili 遇到问题解决办法 pytorch gpu国内镜像下载…...

如何在Android Studio中开发一个简单的Android应用?

Android Studio是开发Android应用的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多强大的功能&#xff0c;使得开发者能够高效地创建Android应用。如果你是Android开发的初学者&#xff0c;本文将引导你如何在Android Studio中开发一个简单的Android应用…...

ubuntu下迁移docker文件夹

在 Ubuntu 系统中迁移 Docker 文件夹&#xff08;如 Docker 数据存储文件夹 /var/lib/docker&#xff09;到另一个磁盘或目录&#xff0c;通常是为了释放系统盘空间。以下是迁移过程的详细步骤&#xff1a; 1. 停止 Docker 服务 在进行迁移之前&#xff0c;必须停止 Docker 服…...

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload&#xff0c;不能被override&#xff0c;声明为虚函数也没有什么意思…...

使用OBS推流,大华摄像头 srs服务器播放

说明&#xff1a; ffmpeg可以推流&#xff0c;但是是命令行方式不太友好&#xff0c;还可以使用主流的OBS开源推流软件&#xff0c;可从官网Open Broadcaster Software | OBS 下载最新版本&#xff0c;目前很多网络主播都是用它做直播。该软件支持本地视频文件以及摄像头推流。…...

CSS 组合选择符详解与实战示例

在 Web 开发过程中&#xff0c;CSS 用于定义页面元素的样式&#xff0c;而选择器则帮助我们精确定位需要添加样式的元素。今天我们主要来讲解 CSS 中的组合选择符&#xff0c;它们能够根据 DOM 结构中元素之间的关系来选中目标元素&#xff0c;从而写出结构清晰、易于维护的 CS…...

Window系统通过Docker本地安装ollama和deepseek

在 Windows 系统上安装 Ollama 和 DeepSeek 的步骤如下&#xff1a; 安装 Ollama 安装 WSL&#xff08;Windows Subsystem for Linux&#xff09;&#xff1a; 如果还没有安装 过WSL的&#xff08;安装过的你直接跳过就行了&#xff09;&#xff0c;可以按照以下步骤进行安装&…...

镜头放大倍率和像素之间的关系

相互独立的特性 镜头放大倍率&#xff1a;主要取决于镜头的光学设计和结构&#xff0c;决定了镜头对物体成像时的缩放程度&#xff0c;与镜头的焦距等因素密切相关。比如&#xff0c;微距镜头具有较高的放大倍率&#xff0c;能将微小物体如昆虫、花朵细节等放大成像&#xff0…...

P3413 SAC#1 - 萌数

题目背景 本题由世界上最蒟蒻的 SOL 提供。 寂月城网站是完美信息教室的官网。地址:http://191.101.11.174/mgzd。 题目描述 蒟蒻 SOL 居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为 22 的回文子串”的数是萌的——也就是说,101 是萌…...

[RabbitMQ] RabbitMQ常见面试题

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

Java运行时数据区

JVM主要流程包括三部分&#xff1a; 首先是 ClassLoard 类加载器&#xff0c;加载数据源文件到jvm当中然后将加载好的数据存放在运行时数据区最后由引擎进行解释和编译的工作 1.Java 内存区域&#xff1a; 1.1 程序计数器 程序计数器&#xff08;Program Counter Register&a…...

【03】 区块链分布式网络

3-1 P2P网络 传统中心化网络由中央服务器保存全量数据。客户端之间无法直接连接&#xff0c;必须通过中央服务器作为桥梁。客户端必须和中央服务器建立连接后访问资源。客户端之间并无连通。 在P2P网络中通过将数据资源分散在网络各个节点中存储以及节点间交互连接&#xff0…...

【SQL server】关于SQL server彻底的卸载删除。

1.未彻底卸载删除SQL Server会出现的问题 如果没有彻底删除之前的SQL server&#xff0c;就可能会出现这个 当要安装新的实例的时候因为之前安装过sql server没有删除干净而导致下图问题&#xff0c;说实例名已经存在。 2.首先要先关闭服务 “开始R”可以快速进入运行&#…...

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用&#xff1f;完整教程来了 【免费下载链接】deberta-v3-base-zeroshot-v2.0 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/deberta-v3-base-zeroshot-v2.0 deberta-v3-base-zeroshot-v2.0是一款基…...

Claude Code 之父:2026 年我一行代码都没写,编程已被 AI 解决

2026 年&#xff0c;你还在一行一行敲代码吗&#xff1f;Claude Code 的创造者、Anthropic 核心人物 Boris Cherny&#xff0c;在公开访谈里抛出一句让整个行业震动的话&#xff1a;2026 年到现在&#xff0c;我没有写过一行代码。所有开发工作&#xff0c;100% 交给 AI 代理完…...

Unity主题系统设计:状态驱动的主题抽象与自动注入方案

1. 这不是换个颜色那么简单&#xff1a;为什么Unity项目里“换肤”总在发布前夜崩盘&#xff1f;你有没有经历过这样的场景&#xff1a;美术同学凌晨两点发来一套新主题资源包&#xff0c;UI设计师说“这次配色更符合品牌调性”&#xff0c;产品说“上线前必须支持深色模式”&a…...

终极艾尔登法环帧率解锁指南:轻松突破60FPS限制

终极艾尔登法环帧率解锁指南&#xff1a;轻松突破60FPS限制 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/EldenRing…...

WTF Auto Layout? 实战:10个常见约束冲突案例解析与解决方案

WTF Auto Layout? 实战&#xff1a;10个常见约束冲突案例解析与解决方案 【免费下载链接】wtfautolayout The source code for Why The Failure, Auto Layout? 项目地址: https://gitcode.com/gh_mirrors/wt/wtfautolayout 在iOS开发中&#xff0c;Auto Layout是构建灵…...

179个核心职位,50个公司分类,中国大模型产业全栈

最后 对于正在迷茫择业、想转行提升&#xff0c;或是刚入门的程序员、编程小白来说&#xff0c;有一个问题几乎人人都在问&#xff1a;未来10年&#xff0c;什么领域的职业发展潜力最大&#xff1f; 答案只有一个&#xff1a;人工智能&#xff08;尤其是大模型方向&#xff09;…...

【C语言】C 语言为什么叫 C 语言呢?

【C语言】C 语言为什么叫 C 语言呢&#xff1f;笔记改自于王道训练营资料 其实是因为先有高级语言ALGOL 60&#xff0c;简称 A 语言&#xff0c;后来经过简化&#xff0c;变为 BCPL 语言&#xff0c;简称 B 语言&#xff0c;而 C 语言是在 B 语言的基础之上发展而来的&#xff…...

通过Taotoken实现Hermes Agent自定义模型供应商接入

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken实现Hermes Agent自定义模型供应商接入 Hermes Agent是一个流行的AI智能体开发框架&#xff0c;它支持通过配置自定义…...

约束感知图缩减算法在量子优化中的应用

1. 约束感知图缩减算法概述在量子计算领域&#xff0c;资源受限一直是制约算法实际应用的主要瓶颈。以当前主流的超导量子计算机为例&#xff0c;其量子比特数通常在50-100个之间&#xff0c;且存在显著的噪声干扰。这种硬件限制使得许多经典优化问题难以直接映射到量子设备上求…...

招行+工行:ReAct(Reasoning + Acting) 讲清楚,并结合 金融场景(含自进化智能体) 给出可直接用的案例

下面我把 ReAct&#xff08;Reasoning Acting&#xff09; 讲清楚&#xff0c;并结合 ** 金融场景&#xff08;含自进化智能体&#xff09;** 给出可直接用的案例与话术&#xff0c;适合分享 / 汇报。一、ReAct 是什么&#xff08;一句话&#xff09;ReAct 推理&#xff08;T…...