文章 2022-06-25 来自:开发者社区

JDK核心JAVA源码解析(9) - hashcode 方法

本文基于 OpenJDK 11, HotSpot 虚拟机 在开发过程中我们可能会经常接触到hashcode这个方法来生成哈希码,那么底层是如何实现的?使用时有何注意点呢?hashcode() 方法底层实现hashcode()是Object的方法:@HotSpotIntrinsicCandidate public native int hashCode();它是一个native的方法,并且...

JDK核心JAVA源码解析(9) - hashcode 方法
文章 2022-06-25 来自:开发者社区

JDK核心JAVA源码解析(8) - 自动封箱拆箱与效率的思考

想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。 本文基于 Java 14 在JDK1.5引入自动装箱/拆箱,让开发更高效。自动装箱时编译器调用valueOf()将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似...

文章 2022-06-25 来自:开发者社区

JDK核心JAVA源码解析(7)- 集合相关(1) - LinkedList

想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。本篇文章针对JAVA中集合类LinkedList进行分析,通过代码解释Java中的Fail-fast设计思想,以及LinkedList底层实现和与ArrayList对比下的就业场景。本文会通....

文章 2022-06-24 来自:开发者社区

JDK核心JAVA源码解析(5) - JAVA File MMAP原理解析(下)

3.2.2. 对MappedByteBuffer进行读写对于MappedByteBuffer的读写和对于ByteBuffer的读写是一样的,可以参考我的另一片文章:https://blog.csdn.net/zhxdick/article/details/511673133.2.2.1 对MappedByteBuffer进行读写,为何最大只能2GB-1B我们来看底层实现:对于所有DirectBy....

文章 2022-06-24 来自:开发者社区

JDK核心JAVA源码解析(5) - JAVA File MMAP原理解析(中)

1.JNI调用1:调用fstat命令获取文件大小:FileDispatcherImpl.c:#define fstat64 fstat Java_sun_nio_ch_FileDispatcherImpl_size0(JNIEnv *env, jobject this, jobject fdo) { struct stat64 fbuf; if (fstat64(fdval(en...

文章 2022-06-13 来自:开发者社区

JAVA SPI(Service Provider Interface)原理、设计及源码解析(其一)

背景团队内部轮流技术分享,其他人都是分享源码,我每次都是设计和架构,感觉自己太特立独行。这次我要合群点,分享点源码。概念Service Provider Interface:服务提供方接口。是一种JVM层面的服务注册发现机制。谁在用jdbc源码里我见过SPI、Dubbo源码里我见过SPI、Eleasticsearch源码里我见过SPI……在基础服务中使用占比很高。怎么判断有没有用如上图,META....

JAVA SPI(Service Provider Interface)原理、设计及源码解析(其一)
文章 2022-05-19 来自:开发者社区

Java 基础 | Object 源码解析

Java 是一门面向对象的语言,在 Java 里面一切都可以看作是一个对象,而 Java 里面所有的对象都默认继承于 Object 类,所以狗哥今天就从源码角度复习了一遍这个类。上图看出 Object 一共有 12 个方法,其中 registerNatives() 是由 C 语言实现的,这个不在研究范围内。1、getClass/** * Returns the runtime clas...

Java 基础 | Object 源码解析
文章 2022-05-10 来自:开发者社区

Java并发系列之四 Condition源码解析

1. Condition的应用在上一篇文章我们用Condition实现了线程交替打印0和1功能。调用Condition的await(),能实现将当前线程释放获取到的相应的锁。并且阻塞当前线程,直到其他线程调用了同一Condition的signal(),如果有多个线程在同一个Condition上调用了await()方法,那么这些线程将会被封装成一个Node节点,加入到Condition内部维护的单....

文章 2022-05-10 来自:开发者社区

Java并发系列之六 CyclicBarrier源码解析

CyclicBarrier概述CyclicBarrier字面意思是可循环使用的线程屏障。CyclicBarrier的功能和CountDownLatch功能有点相似。都能实现线程间相互等待,直到线程做完某些任务,唤醒等待线程。那么既然他们功能类似,提供一种解决方案不就行了吗,为什么还要再提供一个呢。原因是他们的侧重点其实还不一样。在CountDownLatch中我们把线程归类为两种,一类是工作线程....

文章 2022-05-10 来自:开发者社区

Java并发系列之五 CountDownLatch源码解析

CountDownLatch概述引用一段CountDownLatch类注释A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.CountDownLatch是一个同步辅助类。它可以让一个或者....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注