- 博客(4)
- 收藏
- 关注
原创 我们调用 start() 方法跟执行 run() 方法的区别
为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?这是另一个非常经典的 Java 多线程面试问题,而且在面试中会经常被问到。很简单,但是很多人都会答不上来!new 一个 Thread,线程进入了新建状态。调用start()方法,会启动一个线程并使线程进入了就绪状态,当分配到时间片后就可以开始运行了。start()会执行线程的相应准备工作,然后自动执行run()方法的内容,这是真正的多线程工作。 但是,直接执行run()方法,会把...
2022-05-25 10:21:52
119
原创 hashCode 与equals,==
hashCode()与equals()的相关规定:如果两个对象相等,则hashcode一定也是相同的 两个对象相等,对两个equals()方法返回 true 两个对象有相同的hashcode值,它们也不一定是相等的 综上,equals()方法被覆盖过,则hashCode()方法也必须被覆盖 hashCode()的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)。==与 eq...
2022-05-25 09:39:39
88
原创 HashMap 的底层实现
JDK1.8 之前JDK1.8 之前HashMap底层是数组和链表结合在一起使用也就是链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 是否相同,如果相同的话,直接覆盖,不相同就通过拉链法解决冲突。所谓扰动函数指的就是 HashMap 的 hash 方法。...
2022-05-24 16:20:05
147
原创 HashMap 和 Hashtable 的区别,HashMap 和 HashSet 区别
HashMap 和 Hashtable 的区别线程是否安全:HashMap是非线程安全的,Hashtable是线程安全的,因为Hashtable内部的方法基本都经过synchronized修饰。(如果你要保证线程安全的话就使用ConcurrentHashMap吧!); 效率:因为线程安全的问题,HashMap要比Hashtable效率高一点。另外,Hashtable基本被淘汰,不要在代码中使用它; 对 Null key 和 Null value 的支持:HashMap可...
2022-05-24 16:10:02
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人