不考虑多线程并发的情况下,容器类一般使用ArrayList、HashMap等线程不安全的类,效率更高。在并发场景下,常会用到ConcurrentHashMap、ArrayBlockingQueue等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。 ...
分类:
编程语言 时间:
2019-11-18 20:38:22
阅读次数:
82
一、CountDownLatch 1.背景: (1)countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 (2)存在于java.util.cucurrent包下 ...
分类:
其他好文 时间:
2019-11-17 01:34:58
阅读次数:
68
在ConcurrentHashMap(1.8)中与HashMap非常相似,只不过它是线程安全的,在这里主要分析一下putVal()方法,看看与HashMap的区别。 final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == n ...
分类:
其他好文 时间:
2019-11-16 19:34:16
阅读次数:
56
写熟悉的第一句代码 val conf = new SparkConf().setAppName("WordCount")点击SparkConf() ,发现 private val settings = new ConcurrentHashMap[String, String]() 可见 所有配置都是 ...
分类:
其他好文 时间:
2019-11-15 22:48:59
阅读次数:
156
参考:https://blog.csdn.net/woshilijiuyi/article/details/81335497 在规定时间内,使用 hashMap 实现一个缓存工具类,需要考虑一下几点 不可变对象 单例 线程安全 回收失效数据 垃圾回收 缓存大小 LRU 注备: LRU: Least ...
分类:
其他好文 时间:
2019-11-15 12:33:07
阅读次数:
121
Java 面试连环炮系列(三):synchronized怎么用的 面试连环炮系列(七):HashMap的put操作做了什么 面试连环炮系列(八):服务器CPU飙升100%怎么排查 面试连环炮系列(九):为什么ConcurrentHashMap是线程安全的 面试连环炮系列(十):一个线程调用两次sta ...
分类:
其他好文 时间:
2019-11-15 09:24:53
阅读次数:
57
本文基于 "https://github.com/h2pl/Java Tutorial" 的总结 Java7 HashMap(数组+链表) Java7 ConcurrentHashMap(段(数组+链表)+ ReentrantLock) Java8 HashMap (数组+链表+红黑树) ( 如果链 ...
分类:
编程语言 时间:
2019-11-10 19:34:07
阅读次数:
73
一、HashMap分析 在JDK1.8之前,hashMap由数组+链表组成,1.8之后,对hashMap进行了一些修改,最大的不同就是利用了红黑树,所以其由数组+链表+红黑树组成。查找时,根据hash值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间 ...
分类:
其他好文 时间:
2019-11-09 19:23:38
阅读次数:
67
一 功能简介 Hashtable 实现方式: 底层数组+链表初始大小:11扩容:newSize = oldSize*2+1; 超过3/4 即0.75时扩容存放键值对要求: key 和 value 都不能为null线程安全性:线程安全,实现方式是在修改数据时锁住整个HashTable,效率低 父类:D ...
分类:
其他好文 时间:
2019-11-09 00:27:15
阅读次数:
83
HashMap是一个线程不安全的容器,当容量大于 发生扩容时可能会出现环形链表从而导致死循环 扩容就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示 因此引进了线程安全 ...
分类:
其他好文 时间:
2019-11-02 00:32:10
阅读次数:
97