深度解析Java 8:JDK1.8 AbstractQueuedSynchronizer的实现分析(上)深度解析Java 8:AbstractQueuedSynchronizer的实现分析(下)AbstractQueuedSynchronizer的介绍和原理分析原文:https://www.cnblogs.com/gotodsp/p/8830995.html
写在最前对于一个合格的后端程序员来说,现行的流行框架早已经能胜任基本的企业开发,Springboot 任何的框架都把重复的工作更佳简单/优化的解决掉,但是完全陷入在这样的温水里面,好比温水煮青蛙,越是舒服下去,越不行,还是那句话,万变不离其宗。真正能了解JAVA在多少年来经久不衰的秘密,以及最基础,也是最重要的,还是得从源码下手,了解JDK开发人员的编码规范以及实现JDK过程中的思路以及为了更加了解这款完美的语言! 中文...
ArrayListArrayList几乎是每个java开发者最常用也是最熟悉的集合,看到ArrayList这个名字就知道,它必然是以数组方式实现的集合 关注点说一下ArrayList的几个特点,也是面试喜欢问的几个点:1.是否允许为空:是2.是否允许重复数据:是3.是否有序:是4.是否线程安全:否 主要声明看一下ArrayList的声明:publicclass ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.SerializableArrayL...
最近在工作用到Map等一系列的集合,于是,想仔细看一下其具体实现。一、结构publicclassHashMap<K,V> extendsAbstractMap<K,V>implementsMap<K,V>, Cloneable, Serializable1、抽象类AbstractMappublicabstractclassAbstractMap<K,V> implementsMap<K,V>该类实现了Map接口,具体结构如下:
该类代码很简单,不再赘述。2、序列化接口:Serializable该接口没有什么好说的,但通过该接口,就解释了为什么HashMap总一些字段是用transi...
1、什么是HashMap呢?基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值...
首先卸载Centos本身自带的openjdk,我参考的这位博主的安装教程https://www.cnblogs.com/happyflyingpig/p/8068020.html我参考的是这位博主的安装教程https://blog.csdn.net/frank409167848/article/details/80968531
注意:如果是以root用户安装环境时,这里的JAVA_HOME应该为:/root/opt/module/jdk1.8,一定不要少了/root,因为根目录下也有一个/opt/,如果不指定会找不到该目录。
LinkedList介绍
还是和ArrayList同样的套路,顾名思义,linked,那必然是基于链表实现的,链表是一种线性的储存结构,将储存的数据存放在一个存储单元里面,并且这个存储单元里面还维护了下一个存储单元的地址。在LinkedList的链表储存单元中,不仅存放了下一个存储单元的地址,还存放了上一个单元的储存地址,因为Linked是双向链表,双向链表就是可以通过链表中任意一个存储单元可以获取到上一个存储单元和下一个存储单元。
先看一...
* Initializes a Thread.** @param g the Thread group* @param target the object whose run() method gets called* @param name the name of the new Thread* @param stackSize the desired stack size for the new thread, or* zero to indicate that this parameter is to be ignored.* @param acc the AccessControlContext to inherit, or* AccessController.getContext() if null* @param inheritThreadL...
JDK1.8源码(九)——java.util.LinkedHashMap 类 前面我们介绍了 Map 集合的一种典型实现 HashMap ,关于 HashMap 的特性,我们再来复习一遍: ①、基于JDK1.8的HashMap是由数组+链表+红黑树组成,相对于早期版本的 JDK HashMap 实现,新增了红黑树作为底层数据结构,在数据量较大且哈希碰撞较多时,能够极大的增加检索的效率。 ②、允许 key 和 value 都为 null。key 重复会被覆盖,value 允许重复。 ③、非线程安全...
JDK1.8源码(七)——java.util.HashMap 类 本篇博客我们来介绍在 JDK1.8 中 HashMap 的源码实现,这也是最常用的一个集合。但是在介绍 HashMap 之前,我们先介绍什么是 Hash表。1、哈希表 Hash表也称为散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。也就是说它通过把关键码值映射到表中的一个位置来访问记录,以此来加快查找的速度。在链表、数组等数据结构中,查找某个关键...
JDK1.8源码(六)——java.util.LinkedList 类 上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个由链表构成的数组,关于链表的介绍,在这篇博客中 我们也详细介绍过,本篇博客我们将介绍 LinkedList 是如何实现的。1、LinkedList 定义 LinkedList 是一个用链表实现的集合,元素有序且可以重复。1 public class Li...
JDK1.8源码(五)——java.util.ArrayList 类 关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的。1、ArrayList 定义 ArrayList 是一个用数组实现的集合,支持随机访问,元素有序且可以重复。public class ArrayListextends AbstractListimplements List, RandomAccess, Cloneable, java.io.Serializable ①、实现 RandomAccess 接口 这是一个...
JDK1.8源码(四)——java.util.Arrays 类 java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用。1、asList public static List asList(T... a) { return new ArrayList<>(a);
} 作用是返回由指定数组支持的固定大小列表。 注意:这个方法返回的 ArrayList 不是我们常用的集合类 java.util.ArrayList。这里的 ArrayList 是 Arra...
JDK1.8源码(三)——java.lang.String 类 String 类也是java.lang 包下的一个类,算是日常编码中最常用的一个类了,那么本篇博客就来详细的介绍 String 类。1、String 类的定义public final class String implements java.io.Serializable, Comparable, CharSequence {} 和上一篇博客所讲的 Integer 类一样,这也是一个用 final 声明的常量类,不能被任何类所继承,而且一旦一个String对象被创建, 包含在这个对象中的字符序...
上一篇博客我们介绍了 java.lang 包下的 Object 类,那么本篇博客接着介绍该包下的另一个类 Integer。在前面 浅谈 Integer 类 博客中我们主要介绍了 Integer 类 和 int 基本数据类型的关系,本篇博客是从源码层次详细介绍 Integer 的实现。1、Integer 的声明public final class Integer extends Number implements Comparable{} Integer 是用 final 声明的常量类,不能被任何类所继承。并且 Integer 类继承了 Number 类和实现了...