社区
Java SE
帖子详情
线程安全集合类也有例外?
hellobbboy
2012-12-11 11:04:51
看了篇大大的文章,说,
线程安全类,如HashTable,Vector和通过Collections.synchronizedList()等方法获得的集合,
这些集合会当被迭代时,如果被其他线程访问,就会抛异常:ConcurrentModificationException。
这是真的假的啊,毁三观啊啊啊啊啊
求真人指点一二。
...全文
171
5
打赏
收藏
线程安全集合类也有例外?
看了篇大大的文章,说, 线程安全类,如HashTable,Vector和通过Collections.synchronizedList()等方法获得的集合, 这些集合会当被迭代时,如果被其他线程访问,就会抛异常:ConcurrentModificationException。 这是真的假的啊,毁三观啊啊啊啊啊 求真人指点一二。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龙四
2012-12-11
打赏
举报
回复
HashTable,Vector和通过Collections.synchronizedList()等方法获得的集合对象本身是线程安全的,但没人跟你说其对应的Iterator也是线程安全的啊,已经是两个对象了
hellobbboy
2012-12-11
打赏
举报
回复
觉得楼上大哥说的好,看看还有高见某,让帖子再飞一会儿。。。
pywepe
2012-12-11
打赏
举报
回复
doc说的线程安全很多都指的是相对线程安全 不可变类才是绝对线程安全的 看下面的例子: Vector vector = new Vector(); thread 1: for(int i = 0 ; i < 1000 ; i ++){ vector.add("a"); Thread.sleep(1000); } thread 2: for(Object obj in vector){ ... } thread 1每次add,vector内部都在发生变化(写) 而thread 2都是在没有加锁的情况下遍历(读取)vector的 所以抛出 ConcurrentModificationException 并发修改异常 想要避免这个异常的话,就必须避免并发修改,即: Object lk = new Object(); thread 1: lock(lk){ for(int i = 0 ; i < 1000 ; i ++){ vector.add("a"); Thread.sleep(1000); } } thread 2: lock(lk){ for(Object obj in vector){ ... } }
hellobbboy
2012-12-11
打赏
举报
回复
有道理啊,这么理解容易多了。 这个线程安全还真是很坑爹的赶脚。。。
Java中的
线程安全
的
集合类
(如果想知道Java中有关
线程安全
的
集合类
的知识,那么只看这一篇就足够了!)
本文聚焦Java多线程环境下
集合类
的
线程安全
问题。介绍了
线程安全
集合类
的设计原则,探讨了多线程中使用ArrayList的三种方式,分析了各自优缺点及适用场景。还讲解了多线程使用队列(ConcurrentLinkedQueue、BlockingQueue)和哈希表(Hashtable、ConcurrentHashMap)的方法及特点。
线程安全
的
集合类
本文分析了Java中
线程安全
与不安全的
集合类
,如Vector、Stack、Hashtable与ConcurrentHashMap的特性。重点讲解了ConcurrentHashMap的锁策略和性能优化,以及synchronizedList和CopyOnWriteArrayList的使用。提醒读者在实际应用中需根据需求选择合适的
线程安全
机制。
哪些
集合类
是
线程安全
的?
在Java中,
线程安全
集合类
可在多线程并发访问时保证数据一致性和正确性。本文介绍了常见的
线程安全
集合类
,包括Java早期基于同步锁的集合,如Vector等;Java 5引入的java.util.concurrent包中的集合,如ConcurrentHashMap等;还提到可通过Collections方法实现
线程安全
集合,最后给出了
线程安全
集合的选择建议。
线程安全
集合类
本文聚焦Java
线程安全
集合类
。介绍了如Vector、Hashtable等
线程安全
集合类
的特点与使用场景,还提及将非
线程安全
集合转为
线程安全
的机制,以及非阻塞
集合类
。最后强调要根据具体场景选择合适的
集合类
,以确保数据一致性和提升程序性能。
【JavaEE初阶】
线程安全
的
集合类
本文主要介绍Java多线程环境下
线程安全
集合类
的使用。原来大部分
集合类
非
线程安全
,Vector等虽安全但不建议用。文中阐述了多线程环境下ArrayList、队列、哈希表的
线程安全
方案,如使用CopyOnWriteArrayList、ConcurrentHashMap等,还解答了相关面试题。
Java SE
62,622
社区成员
307,256
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章