Error 和Exception区别
Collection 体系
常考考点
复写Comparable 接口的CompareTo方法,就要复写equals方法,保持比较结果一致,复写equals就要复写hashCode方法,
如果即实现了自然排序,可实现了客户化排序,那么按照客户化排序为准。源码客户化排序在前面
HashMap
Map里面的Key是靠Set组织起来的,Value靠Collection组织起来的
java 8以前 数组类型是Entry 8之后为Node
get方法就是 找到同,在找到相应的节点,最后返回
这个算法 是一直在被迭代的原因,理论与现实的结合
手写HashMap 要加强
HashTable 和SynchronizedHashMap 都是加锁顺序执行,但是加锁对象不一样而已(一个是方法调用者this的锁,一个是 final Object mutex变量)
ConcurentHashMap
如何优化HashTable?
1 通过锁细粒度化,将整锁拆解成多个锁进行优化
默认16把分段锁
2 java8之后 ,当前的ConsurrentHashMap 采用了CAS+synchronized 保证并发安全
synchronized 只锁定首节点,很多地方和hashMap类似
sizeCtl 表示初始化,扩容等的标志位,是votilite修饰的
不允许插入null键
helpTransfer 帮助扩容
还需要关注:
三者区别:
这个博客介绍更加详细
https://blog.csdn.net/qq_40826814/article/details/115328565
JUC 知识点梳理
执行countDown()后面继续执行
一个线程到达同步点会阻塞,另一个也到达同步点后,交互数据
阻塞队列:
前三种重点,看源码