- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 啃一啃java并发编程的这块硬骨头——ConcurrentHashMap!
ConcurrentHashMap是线程安全且高效的HashMap,因此在学习ConcurrentHashMap之前我们先来认识一下HashMap。HashMapjdk1.8的HashMap内部使用的数据结构是数组+链表/红黑树:TREEIFY_THRESHOLD表示链表转红黑树的阈值,当链表的长度超过该值时,就将链表转换为红黑树。UNTREEIFY_THRESHOLD表示红黑树转链表的阈值,该值为6而不是8,这样设计的原因是为避免hash碰撞次数在8左右徘徊时,频繁地在链表和红黑树之间转换。s
2020-09-29 17:29:00 441
原创 什么是ConcurrentModificationException?在哪些场景下会报该异常?
ConcurrentModificationException是基于java集合中的 快速失败(fail-fast) 机制产生的,在使用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了增删改,就会抛出该异常。快速失败机制使得java的集合类不能在多线程下并发修改,也不能在迭代过程中被修改。抛异常实例使用迭代器遍历list,同时使用list.remove方法删除元素,会抛ConcurrentModificationException异常:public void tryRemove(Lis
2020-09-16 19:06:34 23100 1
原创 java面试的常客——HashMap
1. HashMap内部数据结构jdk1.8的HashMap内部使用的数据结构是数组+链表/红黑树:TREEIFY_THRESHOLD表示链表转红黑树的阈值,当链表的长度超过该值时,就将链表转换为红黑树。UNTREEIFY_THRESHOLD表示红黑树转链表的阈值,该值为6而不是8,这样设计的原因是为避免hash碰撞次数在8左右徘徊时,频繁地在链表和红黑树之间转换。static final int TREEIFY_THRESHOLD = 8;static final int UNTREEIFY_
2020-09-14 16:00:11 199
原创 一个java枚举,编译器居然为它做了这么多!
基本使用首先,所有枚举类型都有一个基类:java.lang.Enum抽象类,里面提供了一些基础属性和基础方法。枚举类型不仅可以定义枚举常量,还可以定义属性、构造方法、普通方法、抽象方法等,比如,我们定义了一个包含成员变量,构造方法以及抽象方法的四则运算操作符枚举类型:public enum Operator { ADD("+") { @Override public int calculate(int a, int b) { return
2020-09-12 14:25:46 494
原创 你知道实现单例的最佳方法是枚举吗?
从jdk1.5开始,可通过编写一个包含单个元素的枚举类型来实现单例:public enum Singleton { uniqueInstance; public void SingletonOperation() { ...... }}//然后就可以通过Singleton.uniqueInstace.SingletonOperaion来调用这种方法在功能上与共有域方法相近,但它更加简洁,无偿地提供了序列化的机制,绝对防止多次实例化,即使在面对复杂的序列化
2020-09-12 11:54:15 210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人