
jdk-源码
文章平均质量分 85
stateiso
这个作者很懒,什么都没留下…
展开
-
浅显理解 hashcode 和 hash 算法
摘要二进制计算的一些基础知识为什么使用 hashcodeString 类型的 hashcode 方法为什么大部分 hashcode 方法使用 31HashMap 的 hash 算法的实现原理(为什么右移 16 位,为什么要使用 ^ 位异或)HashMap 为什么使用 & 与运算代替模运算?HashMap 的容量为什么建议是 2的幂次方?我们自定义 HashMap 容量最好是多少?前原创 2017-12-30 23:06:07 · 58522 阅读 · 27 评论 -
深入理解 HashMap put 方法(JDK 8逐行剖析)
前言注意:我们今天所有的一切都是基于 JDK 8,JDK 8 的实现和 JDK 7 有重大区别。前面我们分析了 hashCode 和 hash 算法的原理,其实都是为我们解析 HashMap 做铺垫,因为 HashMap 确实比较复杂(如果你每一行代码都看的话,每个位移都纠结的话),虽然总的来说,HashMap 不过是 Node 数组加 链表和红黑树。但是里面的细节确是无比的优雅和有趣。楼主为什么选原创 2017-12-31 18:58:47 · 13247 阅读 · 17 评论 -
并发编程之 wait notify 方法剖析
前言2018 元旦快乐。摘要:notify wait 如何使用?为什么必须在同步块中?使用 notify wait 实现一个简单的生产者消费者模型底层实现原理 1. notify wait 如何使用?今天我们要学习或者说分析的是 Object 类中的 wait notify 这两个方法,其实说是两个方法,这两个方法包括他们的重载方法一共有5个,而Object 类中一共才 12 个方法,可见原创 2018-01-01 22:49:38 · 575 阅读 · 0 评论 -
并发编程之 Thread 类过期方法和常用方法
前言在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费。我们在进行并发必编程的时候一定要注意这些。过期方法1—– stop 方法过期方法2——suspend 方法和 resume 方法常用方法1——线程中断方法 interrupt,isInterrupted,static原创 2018-01-02 20:23:21 · 496 阅读 · 0 评论 -
并发编程之 Java 三把锁
前言今天我们继续学习并发。在之前我们学习了 JMM 的知识,知道了在并发编程中,为了保证线程的安全性,需要保证线程的原子性,可见性,有序性。其中,synchronized 高频出现,因为他既保证了原子性,也保证了可见性和有序性。为什么,因为 synchronized 是锁。通过锁,可以让原本并行的任务变成串行。然而如你所见,这也导致了严重的性能受损。因此,不到万不得已,不要使用锁,特别是吞吐量要求特原创 2018-01-03 22:02:37 · 983 阅读 · 0 评论