ConcurrentHashMap JDK1.8 源码分析
1 助记JDK 1.7使用的是segment分段锁,默认为16个segment,扩容分别在各自的segment进行。JDK 1.8使用的是Synchronized+CAS自旋,相应的内部结构和hashmap一样,改为了红黑树当Node数组为空,直接用CAS初始化或者插入数据当Node数组节点不为空,
查看全文Java
1 助记JDK 1.7使用的是segment分段锁,默认为16个segment,扩容分别在各自的segment进行。JDK 1.8使用的是Synchronized+CAS自旋,相应的内部结构和hashmap一样,改为了红黑树当Node数组为空,直接用CAS初始化或者插入数据当Node数组节点不为空,
查看全文1 对比以前:在没有Spring之前,我们需要通过XML或者Java中定义@Bean 来把我们要用的jar装配到Spring中现在:Springboot提供了一个规范,只要按照这个规范定义好我们用的starter,它就会为我们自动装配。2 具体实现2.1 Springboot的核心注解@Enable
查看全文1. 剖析面试最常见问题之 Java 集合框架1.1. 集合概述1.1.1. Java 集合概览1.1.2. 说说 List,Set,Map 三者的区别?1.1.3. 集合框架底层数据结构总结1.1.3.1. List1.1.3.2. Set1.1.3.3. Map1.1.4. 如何选用集合?1.1
查看全文助记初始大小:单例,初始为10,扩容1.5倍mod: failfast问题时间复杂度add :O(1)add(index): O(n-index),因为需要数组移动get:O(1)最大容量:Integer.Max-8构造函数ArrayList 有三种方式来初始化以无参数构造方法创建 ArrayLis
查看全文帮助记忆组成:Node数组+链表/红黑树数组:默认为0,用了单例模式,第一次调用初始化为16,扩容因子为0.75链表:长度大于8,且数组长度大于64,转为红黑树,长度小于6,转为链表hash索引:异或高四位,防止hash冲突扩容:重新散列法hash异或高四位,防止hash冲突static final
查看全文前言本篇主要介绍java中使用到的各种锁以及使用场景和原理, 写的不对的地方可以评论指出。Object中的MarkWordSynchronized介绍在 JDK 1.6 之前,synchronized 是重量级锁,效率低下。从 JDK 1.6 开始,synchronized 做了很多优化,如偏向锁、
查看全文考察点多线程并发,需要用到synchronized容器满了后,需要进行waitnotifyAll后,还需要判断容器是否满了或者空了,因为notifyAll是唤醒全部线程,线程开始竞争锁,先拿到锁的运行结束后,容器状态发生变化,后进的线程还是要进行状态的判断代码package com.suanfa;i
查看全文