java集合
乡村非主流2020
这个作者很懒,什么都没留下…
展开
-
BlockingQueue 2020最新
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示: 从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列...原创 2020-06-05 10:30:33 · 84 阅读 · 0 评论 -
ConcurrentHashMap 2020最新解析
以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。我们来了解另一个键值存储集合HashTable,它是线程安全的,它在所有涉及到多线程操作的都加上了synchroni原创 2020-06-05 10:28:13 · 130 阅读 · 0 评论 -
CopyOnWriteArrayList 2020最新
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。什么是CopyOnWrite容器原创 2020-06-05 10:26:15 · 125 阅读 · 0 评论 -
HashMap闭环的详细原因-2020最新
HashMap闭环的详细原因HashMap是非线程安全的,在并发场景中如果不保持足够的同步,就有可能在执行HashMap.get时进入死循环,将CPU的消耗到100%。HashMap采用链表解决Hash冲突。因为是链表结构,那么就很容易形成闭合的链路,这样在循环的时候只要有线程对这个HashMap进行get操作就会产生死循环, 单线程情况下,只有一个线程对HashMap的数据结构进行操作,是不可能产生闭合的回路的。 只有在多线程并发的情况下才会出现这种情况,那就是在put操作的时候,如原创 2020-06-05 10:24:52 · 1121 阅读 · 0 评论 -
LinkedHashMap 与 LRU 2020最新解析
HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,不过遗憾的是,HashMap是无序的,也就是说,迭代HashMap所得到的元素顺序并不是它们最初放置到HashMap的顺序。HashMap的这一缺点往往会造成诸多不便,因为在有些场景中,我们确需要用到一个可以保持插入顺序的Map。庆幸的是,JDK为我们解决了这个问题,它为HashMap提供了一个子类 —— LinkedHashMap。虽然LinkedHashMap增加了时间和空间上的原创 2020-06-05 10:22:00 · 117 阅读 · 0 评论 -
Hashmap JDK1.7和1.8有哪些区别?最深入分析2020
美团面试题:Hashmap的结构,1.7和1.8有哪些区别,史上最深入的分析不同点:JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?头插法创建单链表(生成的链表中结点的顺序与输入的顺序相反)尾插法创建单链表(与输入的顺序相同)因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置的计算方式也不一样:1. 在原创 2020-06-05 10:19:53 · 219 阅读 · 0 评论 -
HashMap实现原理及源码分析-2020最新
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。一、什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定原创 2020-06-05 10:16:11 · 287 阅读 · 0 评论 -
Java集合框架概述-2020最新
一、集合 在Java中所有实现了Collection接口的类都必须提供两套标准的构造函数,一个是无参,用于创建一个空的Collection,一个是带有Collection参数的有参构造函数,用于创建一个新的Collection,这个新的Collection与传入进来的Collection具备相同的元素。collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索,排序,线程安全化等 我们可以把集合看作是一种容器,用来存储对象信息。所有集合类都...转载 2020-06-05 09:48:39 · 150 阅读 · 0 评论