Collectio集合中的线程安全问题有哪些
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"Collectio集合中的线程安全问题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Collectio集合中的线程安全问题有
千家信息网最后更新 2025年12月02日Collectio集合中的线程安全问题有哪些
这篇文章主要讲解了"Collectio集合中的线程安全问题有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Collectio集合中的线程安全问题有哪些"吧!
1 List
package com.shi.list;import java.util.List;import java.util.UUID;import java.util.concurrent.CopyOnWriteArrayList;/** * ArrayList再线程安全不安全方面的问题 * @author shiye * 1 new ArrayList<>(); * 结果:抛出大量的异常 * java.util.ConcurrentModificationException at java.util.ArrayList.forEach(Unknown Source) at com.shi.list.TestArrayList1.lambda$0(TestArrayList1.java:20) at java.lang.Thread.run(Unknown Source) 2 原因:add()方法没有加锁 3 解决方案 3.1 使用 new Vector<>() ,安全问题可以解决 但是并发性问题无法得到保障 3.2 使用 Collections.synchronizedList(new ArrayList<>()); 3.3 使用 new CopyOnWriteArrayList(); 写的时候复制一份 再去操作 */public class TestArrayList1 { public static void main(String[] args) { //1 new ArrayList<>(); //2 new Vector<>(); //3 Collections.synchronizedList(new ArrayList<>()); List list = new CopyOnWriteArrayList(); for (int i = 0; i < 30; i++) { new Thread( () -> { list.add((String) UUID.randomUUID().toString().subSequence(0, 5)); System.out.println(list); System.out.println(); }).start(); } }} 2 Set
package com.shi.list;import java.util.Collections;import java.util.HashSet;import java.util.Set;import java.util.UUID;import java.util.concurrent.CopyOnWriteArraySet;/** * Set的线程不安全问题 * @author shiye * * 如果直接使用 HashSet * 会导致 Exception in thread "Thread-26" java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(Unknown Source) */public class TestArraySet1 { public static void main(String[] args) { Set set = new CopyOnWriteArraySet(); //Collections.synchronizedSet(new HashSet()); //new HashSet<>(); for (int i = 0; i < 30; i++) { new Thread( () -> { set.add((String) UUID.randomUUID().toString().subSequence(0, 5)); System.out.println(set); System.out.println(); }).start(); } }} 3 Map
package com.shi.list;import java.util.Collections;import java.util.HashMap;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;/** * Map 中的线程不安全问题 * @author shiye * * 使用 HashMap 出现的问题 * {0=abf8f, 1=6d6e8, 2=945c7, 3=bd78e, 4=76208} java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(Unknown Source) {0=a0f65, 1=dab37, 2=15df6} 解决方案: 1 Collections.synchronizedMap(new HashMap<>()); 2 使用 new ConcurrentHashMap(); //java.util.concurrent.ConcurrentHashMap * */public class TestMap { public static void main(String[] args) { Map map = new ConcurrentHashMap();//Collections.synchronizedMap(new HashMap<>());//new HashMap<>(); for (int i = 0; i < 30; i++) { new Thread( () -> { for (int j = 0; j < 100; j++) { map.put(j + "" ,(String) UUID.randomUUID().toString().subSequence(0, 5)); } System.out.println(map); System.out.println(); }).start(); } }} 感谢各位的阅读,以上就是"Collectio集合中的线程安全问题有哪些"的内容了,经过本文的学习后,相信大家对Collectio集合中的线程安全问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
问题
安全
线程
学习
内容
方案
解决方案
原因
就是
思路
情况
文章
方法
方面
时候
更多
知识
知识点
篇文章
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全属于法律职业吗
pubmed数据库中作者格式
arcmap连接数据库没有权限
直播软件开发平台
广东综合软件开发价目表
mysql数据库连接池
处理服务器
快鸟 服务器请求出错
威胁网络安全的主因素来自
教育网络安全研修
微信聊天记录都会存在服务器里吗
我的世界基岩版服务器管理
深圳市创见网络技术 官网
前期软件开发计入会计科目
中国网络安全委员会主任
万州区综合软件开发服务电话多少
网络技术支付作文题目
php写数据库实训
查看数据库表的脚本sql
小学生网络安全宣传视频制作
做中国地图的软件开发
北京瑞祥鑫悦网络技术
access宇哥数据库案例
服务器屏蔽端口
在数据库技术的发展过程中
吉林省知了互联网科技
如何用云服务器下载软件
注册数据库怎么修复
月神兽数据库
越南网络安全立法