Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
Java并发容器Map类有两个,ConcurrentHashMap和ConcurrentSkipListMap,前者是无序的,后者有序。
public class ConcurrentHashMapTest {private static final int len = 20;public static void main(String[] args) {ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();CountDownLatch latch = new CountDownLatch(len);Thread[] threads = new Thread[len];Random rd = new Random();for (int i=0; i<len; i++) {threads[i] = new Thread(()->{for (int j=0; j<100; j++) {map.put(Thread.currentThread().getName()+" " + j, ""+j);}latch.countDown();});}long startTime = System.currentTimeMillis();for (int i=0; i<len; i++) {threads[i].start();}try {latch.await();} catch (InterruptedException e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println(map.size());System.out.println(endTime - startTime);} }
执行上述代码输出:
2000
33
将ConcurrentHashMap 换成 ConcurrentSkipListMap,一样得到map的 size 大小为 2000。
Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap相关推荐
- Java并发编程之ConcurrentHashMap原理解析
ConcurrentHashMap get: /*** 根据键值key获取value,根据key.equals方法判断两个元素是否相同* @param key 键* @return 如果key存在则返 ...
- Java并发编程之ConcurrentHashMap
http://blog.csdn.net/hsuxu/article/details/9455563 转载于:https://www.cnblogs.com/hnucdj/p/4321144.html
- java并发编程之4——Java锁分解锁分段技术
转载自 java并发编程之4--Java锁分解锁分段技术 并发编程的所有问题,最后都转换成了,"有状态bean"的状态的同步与互斥修改问题.而最后提出的解决"有状态bea ...
- Java并发编程之CAS第三篇-CAS的缺点
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...
- zbb20180929 thread java并发编程之Condition
java并发编程之Condition 引言 在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout ...
- Java 并发编程之美:并发编程高级篇之一-chat
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java 并发编程之美:并发编程高级篇之一
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java并发编程之CyclicBarrier详解
简介 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程. CyclicBarrier ...
- java并发编程之AbstractQueuedSynchronizer
引言 AbstractQueuedSynchronizer,队列同步器,简称AQS,它是java并发用来构建锁或者其他同步组件的基础框架. 一般使用AQS的主要方式是继承,子类通过实现它提供的抽象方法 ...
最新文章
- Springboot - -web应用开发-Servlets, Filters, listeners
- 计算机二级为什么无法登录,解决因登录失败而无法启动SQL服务
- linux常用命令大全(转)
- linux superblock 时间,Linux命令(八)
- SAP License:SAP顾问的可持续性发展
- python ix loc iloc_关于python:.ix()是否总是比.loc()和.iloc()更好,因为它速度更快并且支持整数和标签访问?...
- 【模型压缩】知识蒸馏经典解读
- Codeforces Round #215 (Div. 2) B. Sereja and Suffixes map
- CMake实践(2)
- 修改android设备型号
- 百度地图只显示行政区划轮廓
- python和c 情侣网名_简单情侣网名的介绍
- 内网穿透工具 netapp
- 野山参怎么吃好,这样炖是不是效果最好
- U74LVC1G07G-SOT353R-TG
- 设计模式 | 中介者模式(详解)
- 【无标题】python利用公式法计算圆周率
- 狼人杀超详入门攻略3之各角色玩法
- 教育数据大全 1949-2021年全国省级地级市人力资本受教育年限 上市公司教育背景学历结构 教育支出 学校教职工学生
- Linux中文件替换命令
热门文章
- 【英语学习】【Daily English】U14 Transportation L01There will be a car exhibition next month
- Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(2) - 32位EFLAGS - 80386(386, Intel386)/80486(486, Intel486)
- Android人脸识别开发入门--基于虹软免费SDK实现
- tp5中php正则怎么写,详解tp5中phpmailer的使用
- VS2005、VS2010等VS系列IDE在MFC开发过程中,Resource View标签打不开,问题为“opened in other editor”
- Project Euler 001-006 解法总结
- CSM中一些常见问题的解决方式
- pgsql查表名_PostgreSQL 查询一个表
- 客户端和服务器不支持一般 ssl 协议版本或加密套件。_恶意软件加密通信概要分析...
- 海洋泡沫结点图完整分析