社区
Java SE
帖子详情
Java集合类(线程安全与非线程安全)的效率问题
major57
2014-02-26 11:06:50
java集合类中非线程安全的集合可以用同步包装器使集合变成线程安全,比如:
HashMap --> Collections.synchronizedMap(new HashMap()),
那如果比较Collections.synchronizedMap(new HashMap())和HashTable的话,
哪个的效率更高呢?类似的对应集合(HashMap-HashTable)还有哪些呢,各自
的效率又如何呢?欢迎举例,多多益善....
...全文
896
7
打赏
收藏
Java集合类(线程安全与非线程安全)的效率问题
java集合类中非线程安全的集合可以用同步包装器使集合变成线程安全,比如: HashMap --> Collections.synchronizedMap(new HashMap()), 那如果比较Collections.synchronizedMap(new HashMap())和HashTable的话, 哪个的效率更高呢?类似的对应集合(HashMap-HashTable)还有哪些呢,各自 的效率又如何呢?欢迎举例,多多益善....
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
程序男
2014-07-25
打赏
举报
回复
楼上总结的真好,学习了
tony4geek
2014-02-26
打赏
举报
回复
看你需要什么情况下用什么。
Defonds
2014-02-26
打赏
举报
回复
鱼和熊掌的问题了。 比如竞标系统,系统不会太大,而且并发量也不会太高。 这时候你就不需要去考虑空间管理等问题,速度和效率是第一位的。 而如果是银行项目,如果效率和安全二选其一,你是程序员,你怎么选?
major57
2014-02-26
打赏
举报
回复
引用 1 楼 defonds 的回复:
效率和异常是对双刃剑。如何取舍,就看你现实情况了
就是不知道如何取舍,所以才来求解!希望能举例说明,
Defonds
2014-02-26
打赏
举报
回复
效率和异常是对双刃剑。如何取舍,就看你现实情况了
lxbccsu
2014-02-26
打赏
举报
回复
其实Java集合用到了很多的数据结构,用不同的数据结构实现的Java集合类,当然在不同的场合中使用有不同的性能表现;下面简单说说你提到的这两个类似的java集合类在多线程下的效率问题(一般都是时间方面): 首先Collections.synchronizedMap(new HashMap())和HashTable 都是同步集合,Collections.synchronizedMap采用的同步块实现,HashTable采用的是同步方法实现,在多线程环境下,一般认为是同步块好于同步方法; 其次,说到多线程,那线程安全是很重要的,这两个同步集合对于一些常见的简单操作:如put, remove, get等,线程安全对于单个操作来说是没什么问题的,但对于一些复合操作来说,如同时put和remove,迭代等,要保证线程安全,就必须在使用时 同步加锁 了,也就是确保像 put和remove 是一个原子操作,当然两种Java集合类都采用hash算法实现,运行效率不会有什么大的区别;前面说到它们都是同步集合,也就是说在多线程下并发操作时,不管是简单的操作还是复合操作,为了线程安全,都是串行的操作,这样就会大大降低程序的效率,所以呢,并发集合ConcurrentHashMap出现了,这样即解决的并发问题,也解决了效率问题; 最后,建议你在多线程下,就用ConcurrentHashMap吧,用它来替换你说的那两个同步集合; 至于其他的集合类,就自己去学习了。
俺是小王子
2014-02-26
打赏
举报
回复
个人觉得具体问题具体分析~~~
你说的有些宽泛~~~~
java
集合类
的
线程安全
_
Java
集合中的
线程安全
问题
介绍JDK中提供了很多集合实现,本文不会介绍有哪些集合的接口以及实现类,而是介绍如何在多线程情况下使用这些集合。阅读更多…如果您还不太了解
Java
的整个集合体系的话,请查看《
Java
开发成长之路第一年》。如果您还想要了解线程的相关内容,请查看《
Java
多线程》。线程不安全
java
.util.HashMap、
java
.util.ArrayList、
java
.util.LinkedList、
java
....
Java
线程安全
集合类
有哪些?
本文介绍了
Java
中的
线程安全
集合类
及其应用场景。主要包括Collections类提供的同步方法,以及ConcurrentHashMap、CopyOnWriteArrayList等高性能并发集合。文章分析了在高并发、数据一致性要求高和需要高
效率
等不同场景下的选择策略,并提供了使用Collections和ConcurrentHashMap的具体代码示例。最后强调,正确选用
线程安全
集合类
能有效解决多线程编程中的数据一致性
问题
,提升程序性能和稳定性。
关于
Java
集合类
中
线程安全
与不安全
问题
笔录
关于
Java
集合类
是面试中的常客,
线程安全
也是,所以就想写篇文章好好分析一下。
线程安全
的类 Vector:就比arraylist多了个同步化机制(
线程安全
),因为
效率
较低,现在已经不太建议使用。 Statck:堆栈类. hashtable:就比hashmap多了个
线程安全
. enumeration:枚举,相当于迭代器. 除了这些之外,其他的都是非
线程安全
的类和接口。
线程安全
的类其方法
【数据结构与算法】【02】
Java
常用
集合类
特性分析和底层实现
Java
集合类
和通用数据结构的区别
Java
集合类
是从数据使用方式的角度,对复杂数据类型进行分类的 List存储有序的单列数据,是纯数值集合,可以根据位置查找数据 Set存储无序的单列数据,是纯数值集合,但是没有顺序和位置的概念 Map存放双列数据集合,是键值対集合,每个数据包含关键字和实际值两列,可以通过关键字查对应值 通用数据结构则是从数据内存结构的角度,对复杂数据类型进行分类的 误区 大多时候,数据的使用方式,就已经决定了其底层采纳的内存结构 比如一想到List,就想到数组、链表,一想到Ma
Java
中的
集合类
与
线程安全
的讨论
ArrayList是线程不安全的,可以在单线程中使用,在多线程中可以根据代码选择合适的时机进行加锁,实现
线程安全
的操作,但对代码能力要求较高。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章