8.1.2 学习更多关于ConcurrentHashMap
ConcurrentHashMap类的行为就像是HashMap,但是它设计工作在多线程中不需要明确同步。例如,你需要去检查map中是否包含着特殊的值,如下:
if (!map.containsKey("some string-based key"))
map.put("some string-based key", "some string-based value");
尽管这个例子是简单的,且可以工作,但它却不是安全线程。在使用map.containsKey()和map.put()的方法之间,其它的线程可能插入进来,这个可能被重写。为了解决这个问题,你应该在代码中明确同步,如下代码:
synchronized(map)
{
if (!map.containsKey("some string-based key"))
map.put("some string-based key", "some string-based value");
}
上面的代码片段,在map的读和写的操作中,我们加入了锁,然后去查询key的值是否存在map中,如果不存在,那么就添加到map中。当其它线程试图去调用这个map时,这个锁就会起到作用。
在ConcurrentHashMap<V>的类解决了这个的问题,调用VputIfAbsent(K key, V value)的方法,当key的值不存在时,就会插入key和value的值到map中。这个方法与下面的代码片段有点像:
synchronized(map)
{
if (!map.containsKey(key))
return map.put(key, value);
else
return map.get(key);
}
应用putIfAbsent()的方法,前面的简单代码就可以被取代。
map.putIfAbsent("some string-based key", "some string-based value");
8.1.2 学习更多关于ConcurrentHashMap相关推荐
- [Java并发包学习]深度剖析ConcurrentHashMap
[Java并发包学习]深度剖析ConcurrentHashMap 概述 还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到: HashMap是非线程安全的,Ha ...
- 教大家S40/java所有玩机技巧,喜欢请转载 加QQ657752021学习更多技术
教大家S40/java所有玩机技巧,喜欢请转载 加QQ657752021学习更多技术 2012年01月11日 加QQ657752021 学习更多网络技术 希望大家支持橙音 [b]自己打造高品质音乐:[ ...
- 深入Java集合学习系列:ConcurrentHashMap之实现细节
http://www.iteye.com/topic/344876 ConcurrentHashMap是Java 5中支持高并发.高吞吐量的线程安全HashMap实现.在这之前我对Concurrent ...
- 如何花更少的时间学习更多的知识
花时间学习不见得就是真正的学习. 因为你的学习方法一开始就是错的话,那么花再多的时间在学习上也是无济于事. 所以你得看看这篇文章,如何花少量的时间却仍然学习到更多的知识.上帝给了我们每个人同样的时间, ...
- SpringBoot整合Easyexcel操作Excel,闲暇之余,让我们学习更多
easyexcel 3.0.2 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boo ...
- Java初学者的学习路线建议
网络上看到过很多的java工程师的学习路线,内容很多,对于java初级人员来说,这种学习路线看的多了,就很容易混淆,最后并不能给自己一个深刻的认识和理解,我将一些重点,干货整理出来. 一.基础 Jav ...
- Java学习---面试基础知识点总结
Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类.sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程 ...
- Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易
近日,PyTorch 社区发布了一个深度学习工具包 PyTorchHub, 帮助机器学习工作者更快实现重要论文的复现工作.PyTorchHub 由一个预训练模型仓库组成,专门用于提高研究工作的复现性以 ...
- 怎样快速学习React
react简单学习路线(实用版) 学习一门新的技术之前有必要了解一下该技术在专业领域的评价,使用的领域,以及整体的学习路线,总之尽可能多的在入坑之前了解相关方面的信息.不要什么都不去查就直接学了,这个 ...
- 吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)
多隐含层神经网络的推导步骤非常类似于单隐含层神经网络的步骤,只不过是多重复几遍. 关于单隐含层神经网络公式的推导可以参考: http://blog.csdn.net/fengbingc ...
最新文章
- pip install 豆瓣源、清华源、阿里源、中国科技大学源
- 第二章 实验设计的考虑因素
- 【Nodejs】记一次图像识别的冒险
- ios 图片 相册 存储方式
- PyTorch深度学习实践07
- java 解析日期 t z_date - Java SimpleDateFormat(“yyyy-MM-dd'T'HH:mm:ss'Z'”)给出时区为IST...
- 简单的oracle备份恢复批处理文件 -- 转
- NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
- 怎么写显示商品图片_虾皮商店封面图片 虾皮商店介绍怎么写吸引人
- “Git 不是昙花一现!”
- python时序数据分析--以示例说明
- Java软件开发技术交流群
- 2022最新《人工智能入门指南》全套学习教程,全网阅读量10w+
- cad卸载_IT运维:CAD卸载不彻底,无法重装?
- XILINX FPGA最小逻辑单元CLBs, Slices和LUT区别
- 17周(胖子 大胖子 )
- 【T3】win10系统成功注册加密锁后,登录软件依然提示“产品未找到合法的license授权”
- matlab 变量上小尖尖,发动机最中间的那个小尖尖,你猜是什么?
- 连接远程电脑主机,pycharm远程调试代码方法
- Idea中怎么运行从github上下载的项目