
java
文章平均质量分 89
MrFengZH
这个作者很懒,什么都没留下…
展开
-
ReentrantLock 源码分析
前言 本文主要分析 ReentrantLock 是如何实现非公平锁和公平锁的 源码版本为 jdk1.8 构造方法 ReentrantLock 通过在构造方法里传入 boolean 参数来决定锁是否是公平的。 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSyn...原创 2020-02-11 15:44:37 · 275 阅读 · 0 评论 -
String 的 intern 方法分析
分析这几种情况(jdk 1.8): 情况一: String str1 = new String("hel") + new String("lo"); // 并没有在常量池里创建 "hello" String str2 = new String("ja") + new String("va"); // 虽然这条语句没有在常量池创建 "java",但常量池之前已经...原创 2020-02-08 19:34:45 · 181 阅读 · 0 评论 -
ConcurrentHashMap 源码分析(1.8)
文章目录概述主要属性主要内部类NodeForwardingNode构造方法一些重要方法Unsafe 方法initTabletransferputputValget参考 概述 ConcurrentHashMap 是一个加强版的 HashMap,它支持并发操作。比起 HashTable 直接锁住整个数组,ConcurrentHashMap 锁的粒度更细,锁的是单个数组元素,而且有些操作例如初始化,对数...原创 2019-12-16 20:00:38 · 226 阅读 · 0 评论 -
LinkedList 源码分析
概述 LinkedList 底层的实现是双向链表,因而它改查的效率较低,而在增删方面,由于不用进行数据的整体移动,所以在中间进行增删时具有较高的效率。 下面就从源码入手,对 LinkedList 的增删改查作进一步的了解。 主要属性 // 元素个数 transient int size = 0; // 头结点 transient Node<E> fir...原创 2019-12-04 20:36:42 · 154 阅读 · 0 评论 -
对于通过继承Thread类和实现Runnable接口这两种方式来创建线程的理解(含少量源码分析)
文章目录举例说明如何通过这两种方式创建线程继承Thread类创建线程类实现Runnable接口创建线程从源码角度分析以上两种方法继承Thread实现Runnable两种方式所带来的不同 举例说明如何通过这两种方式创建线程 继承Thread类创建线程类 public class FirstThread extends Thread { int i = 0; //不同线程对象不能共享该成员变量 ...原创 2018-10-20 15:43:07 · 1121 阅读 · 0 评论 -
HashMap源码分析(JDK1.8)
文章目录前言源码分析需要先了解的知识将会用到的实例常量将会用到的实例变量Node(存储键值对的节点)构造方法默认的构造方法带一个Map类型参数的构造方法带一个int参数的构造方法带两个int参数的构造方法put方法(增)putIfAbsentresize方法(扩容)putValremove方法(删)removeNodereplace方法(改)getNodeget方法(查)小结参考 前言 本文将对H...原创 2019-05-20 21:22:16 · 114 阅读 · 0 评论 -
ThreadPoolExecutor 源码分析
文章目录前言源码分析crlWorker构造方法的参数execute(提交任务)addWorker小结下execute的步骤执行任务runWorkergetTask小结下执行任务的步骤参考 前言 ThreadPoolExecutor是线程池的默认实现,在使用线程池的时候,如果没有特殊要求,则直接创建ThreadPoolExecutor。如果有特殊要求,则直接继承ThreadPoolExecutor,...原创 2019-07-11 14:05:50 · 158 阅读 · 0 评论