
Java源码解析
Java源码解析
仲夏北斗星
这个作者很懒,什么都没留下…
展开
-
[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 · 568 阅读 · 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 · 241 阅读 · 0 评论 -
[JDK8] ArrayList源码解析
源码分析目录类图结构存储结构ArrayList初始化新增对象与数组扩容删除对象查找对象线程安全性VectorSynchronizedListCopyOnWriteArrayList类图结构ArrayList是对List列表数据结构的一种具体实现,先放一张源码类图结构,有个直观的印象,该图是Java集合Collection类图的一个子集:存储结构transient Object[] elementData;ArrayList实例本身只是一个普通的Java对象,它的内部封装了一个数组,添加到Arr原创 2020-04-29 16:20:33 · 416 阅读 · 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 · 370 阅读 · 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 · 2218 阅读 · 0 评论