并发编程(二)------并发类容器ConcurrentMap
2018-12-27 07:41:52来源:博客园 阅读 ()
并发类容器:
- jdk5.0以后提供了多种并发类容器来替代同步类容器从而改善性能。
- 同步类容器的状态都是串行化的。
- 他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。
ConcurrentMap接口下有俩个重要的实现:
- ConcurrentHashMap
- ConcurrentSkipListMap(支持并发排序功能)
ConcurrentHashMap原理:
ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashTable,它们有自己的锁。
只要多个修改操作发生在不同的段上,它们就可以并发进行。把一个整体分成了16个段(Segment),也就是最高支持16个线程的并发修改操作。
这也是在多线程场景时减小锁的粒度从而降低锁竞争的一种方案。并且代码中大多共享变量使用volatile关键字声明,目的是第一时间获取修改的内容,性能非常好。
1 package com.bfxy.thread.cord.collection; 2 import java.util.Map; 3 import java.util.concurrent.ConcurrentHashMap; 4 5 public class UseConcurrentMap { 6 7 public static void main(String[] args) { 8 9 ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>(); 10 11 map.put("k1", "v1"); 12 map.put("k2", "v1"); 13 map.put("k1", "vv1"); //如果元素已存在 则覆盖掉 14 map.putIfAbsent("k1", "vvv1"); //如果元素已存在 则不会put 15 16 for(Map.Entry<String, Object> me : map.entrySet()){ 17 System.err.println("key: " + me.getKey() + ", value: " + me.getValue()); 18 } 19 map.size(); 20 } 21 22 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java个人博客源码
- 因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名 2020-06-10
- Java3个编程题整理 2020-06-09
- (易忘篇)java基础编程难点4 2020-06-08
- (易忘篇)java基础编程难点3 2020-06-05
- 国外大佬总结的 10 个 Java 编程技巧! 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash