【JDK源码之HashMap 类分析】教程文章相关的互联网学习教程文章

JDK源码解析——Object的hashCode方法【代码】

目录 前言说明一、源码目录结构(1).JDK目录(2).hotspot目录 二、基础知识(1).Object Header(对象头)(2).Lock(锁)1. 无锁 => 偏向锁2. 偏向锁 => 轻量级锁3. 轻量级锁 => 重量级锁 (3).Mark Word(标记字) 三、hashCode()的C++源代码(1). 寻找hashCode方法(2). FastHashCode(Thread * Self, oop obj)源代码解读1. 判断对象是否使用了偏向锁2. 做一些基本判断3. 当对象处于中性时4. 当对象处于重量级锁状态时5. 本线程拥有此对象...

JDK源码分析-ScheduledExecutorService【代码】【图】

概述 接口的继承结构如下:下面分析这几个接口的定义。 Executor 从名字来看,Executor 可译为“执行器”,它的作用就是执行任务。该接口只有一个 execute 方法: public interface Executor {// 执行给定的任务(Runnable)void execute(Runnable command); } 该方法的作用就是(在将来的某个时间)执行给定的命令,即实现了 Runnable 接口的对象。该命令可能在一个新的线程中执行,也可能在调用它的线程中执行。它的用法示例代码...

jdk源码_String(1)【代码】

package com.example.demo;public class Sort {//java源码之stringpublic static void main(String[] args) {{//空字符对象创建字符串String s = new String();System.out.println(s);}{//字符串对象创建字符串String s = new String("a");System.out.println(s);}{//字符数组方式声明字符串char[] c = {a, b, c};String s = new String(c);System.out.println(s);}{/*** // Note: offset or count might be near -1>>>1.if (offs...

JDK源码分析-CopyOnWriteArrayList【代码】【图】

1. 概述 CopyOnWriteArrayList,从名字可以看出它跟 ArrayList 有点关系,可以理解为线程安全的 ArrayList。它的类签名和继承结构如下: public class CopyOnWriteArrayList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {} 它主要实现了 List 接口,也是一个集合类,下面分析其代码实现。 2. 代码分析 仍然先从构造器进行分析。 2.1 构造器 // 构造器一:无参构造器 public CopyOnWriteArrayList() {set...

jdk源码——HashMap

JDK1.7 从源码上看,HashMap 实现了Map接口 cloneable接口,和序列化接口 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable{ HashMap的默认初始容量为16 static final int DEFAULT_INITIAL_CAPACITY = 16; HashMap最大容量为2^30 static final int MAXIMUM_CAPACITY = 1 << 30; 加载因子为0.75,当容量达到75%时就扩容一次 static final float DEFAULT_LOAD_FACTOR = 0.7...

jdk源码阅读-Object类

native 关键字private static native void registerNatives();static {registerNatives();}public final native Class<?> getClass();public native int hashCode();protected native Object clone() throws CloneNotSupportedException;public final native void notify();public final native void notifyAll();public final native void wait(long timeout) throws InterruptedException; native是与C++联合开发的时候用的!jav...

【JDK】JDK源码分析-Semaphore【代码】【图】

概述 Semaphore 是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。 打个通俗的比方,可以把 Semaphore 理解为一辆公交车:车上的座位数(初始的“许可” permits 数量)是固定的,行驶期间如果有人上车(获取许可),座位数(许可数量)就会减少,当人满的时候不能再继续上车了(获取许可失败);而有人下车(释放许可)后就空出了一些座位,其他...

jdk源码——linkedList

从源码的定义中,我们可以看出linkedList是实现list接口和deque接口的双端链表 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable LinkedList是一个双端链表结构,有两个变量 first指向头部,last指向链表尾部,size表示当前链表中的数据个数 transient int size = 0; transient Node<E> first; transient Node<E> last; LinkedList 的带参构造函数 p...

JDK源码之HashMap 类分析

一 概述 HashMap实现 hashmap继承了AbstractMap,实现了Map接口和Cloneable接口,HashMap是基于哈希表(散列表),实现Map接口的双列集合 jdk8中底层数据结构已经改为二叉树,之前是链表 看hashmap之前,需要把Map,AbstractMap源码撸一遍,这里放我的博文链接: https://www.cnblogs.com/houzheng/p/12687883.html 涉及到的数据结构 二 源码分析 属性 静态内部类(Entry的实现) 三 总结

从 JDK 源码角度看 Object

ava的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类。它包含了对象常用的一些方法,比如getClass、hashCode、equals、clone、toString、notify、wait等常用方法。所以其他类继承了Object后就可以不用重复实现这些方法。这些方法大多数是native方法,下面具体分析。 主要的代码如下:publicclassObject{privatestaticnativevoidregisterNatives();static{ registerNatives(); }public...

JDK8源码解析 -- HashMap(二)【代码】【图】

在上一篇JDK8源码解析 -- HashMap(一)的博客中关于HashMap的重要知识点已经讲了差不多了,还有一些内容我会在今天这篇博客中说说,同时我也会把一些我不懂的问题抛出来,希望看到我这篇博客的大神帮忙解答困扰我的问题,让我明白一个所以然来。彼此互相进步,互相成长。HashMap从jdk7到jdk8版本改变大,1.新增加的节点在链表末尾进行添加 2.使用了红黑树。 1. HashMap容量大小求值方法// 返回2的幂次static final int tableSi...

JDK源码解析 InputStream类就使用了模板方法模式【代码】

JDK源码解析 InputStream类就使用了模板方法模式。 在InputStream类中定义了多个 read() 方法,如下: public abstract class InputStream implements Closeable {//抽象方法,要求子类必须重写public abstract int read() throws IOException; ?public int read(byte b[]) throws IOException {return read(b, 0, b.length);} ?public int read(byte b[], int off, int len) throws IOException {if (b == null) {throw new NullP...