Java源码解析
Java源码解析
Litmmp
这个作者很懒,什么都没留下…
展开
-
[JDK8] HashMap源码解析
文章标题写在前面底层存储结构构造HashMaptableSizeFor(int cap)HashMap添加/更新hash(key)putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)treeifyBin(Node<K,V>[] tab, int hash)resize()HashMap删除HashMap查找线程安全 写在前面 HashMap的实现思想太有含金量了,方方面面都有值得细细品鉴的,想用一篇文章分析透彻原创 2020-05-12 16:37:21 · 525 阅读 · 0 评论 -
为什么重写equals()就必须重写hashcode()
JVM是从内存角度看对象的,内存一样的对象才算是相等的,所以,内存的唯一性决定了对象只能是“自己和自己才是相等的”。 Java的“==”规则是个内存判断,默认的equals()也使用了“==”规则: /** * 该方法应该满足五个条件: * 1、自反性:任意对象x,x.equals(x)==true * 2、对称性:任意对象x、y,如果x.equals(y)==true,那么,y.eq...原创 2020-04-12 21:10:30 · 216 阅读 · 0 评论 -
[JDK8] ArrayList源码解析
源码分析目录类图结构存储结构ArrayList初始化新增对象与数组扩容删除对象查找对象线程安全性VectorSynchronizedListCopyOnWriteArrayList 类图结构 ArrayList是对List列表数据结构的一种具体实现,先放一张源码类图结构,有个直观的印象,该图是Java集合Collection类图的一个子集: 存储结构 transient Object[] elementData; ArrayList实例本身只是一个普通的Java对象,它的内部封装了一个数组,添加到Arr原创 2020-04-29 16:20:33 · 324 阅读 · 0 评论 -
[JDK8] Java单线程框架实现原理
文章标题Java单线程有三种实现方法Java的单线程框架第一种方法:继承Thread类第二种方法:实现Runnable接口第三种方法:实现Callable接口 Java单线程有三种实现方法 继承Thread类,重写run(),无返回值 实现Runnable接口,重写run(),无返回值 实现Callable<V>接口,重写call()方法,有返回值 Java的单线程框架 这三种实现方式都是套用的一个线程框架,以下是简化的Thread类源码: // 线程任务定义接口 public interf原创 2020-04-22 14:48:46 · 326 阅读 · 0 评论 -
[JDK8] Java线程的几种使用方法
文章目录单线程的使用方式java.lang.Runnablejava.lang.Threadjava.util.concurrent.FutureTask线程池的使用方式创建线程池提交线程任务关闭线程池 单线程的使用方式 java.lang.Runnable 代码实现方式: 构造线程任务类MyRunnable,实现Runnable接口 以MyRunnable对象为参数,构造线程Thread实例 public class MyRunnable implements Runnable { @Overrid原创 2020-04-19 19:18:06 · 2109 阅读 · 0 评论