社区
Java SE
帖子详情
Java集合类(线程安全与非线程安全)的效率问题
major57
2014-02-26 11:06:50
java集合类中非线程安全的集合可以用同步包装器使集合变成线程安全,比如:
HashMap --> Collections.synchronizedMap(new HashMap()),
那如果比较Collections.synchronizedMap(new HashMap())和HashTable的话,
哪个的效率更高呢?类似的对应集合(HashMap-HashTable)还有哪些呢,各自
的效率又如何呢?欢迎举例,多多益善....
...全文
830
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
打赏
举报
回复
个人觉得具体问题具体分析~~~
你说的有些宽泛~~~~
Think in
Java
(中文版)-chm格式
第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11
Java
和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13
Java
还是C++?
JAVA
多线程精讲下
本课程是《零基础学
Java
》系列课程中的多线程相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解
Java
多线程的原理及实现运行机制,深刻学习多线程的生命周期、调度、控制等内容。多线程精讲下课程内容涵盖如下:l 线程的同步(
线程安全
问题
)l 线程的死锁l 线程间通信l 线程组l 线程池l 多线程的第三种实现方案l 匿名内部类方式使用多线程l 定时器的使用l 多线程面试题
java
集合类
的
线程安全
_
Java
集合中的
线程安全
问题
介绍JDK中提供了很多集合实现,本文不会介绍有哪些集合的接口以及实现类,而是介绍如何在多线程情况下使用这些集合。阅读更多…如果您还不太了解
Java
的整个集合体系的话,请查看《
Java
开发成长之路第一年》。如果您还想要了解线程的相关内容,请查看《
Java
多线程》。线程不安全
java
.util.HashMap、
java
.util.ArrayList、
java
.util.LinkedList、
java
....
java
中哪些集合是
线程安全
的,哪些是线程不安全的
目录1. 常见集合2.什么叫“集合是线程不安全的”3.
线程安全
和线程不安全的集合3. 如何综合考虑线程不安全和
效率
低的
问题
1. 常见集合 这里自己总结了一些比较常见的
java
集合,对于这些集合的特点和区别后期博客中会进行总结介绍: 2.什么叫“集合是线程不安全的” 当多个并发同时对非
线程安全
的集合进行增删改的时候会破坏这些集合的数据完整性; 例如:当多个线程访问同一个集合或Map时,如果有超...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章