
java源码分析
文章平均质量分 86
小潭渔
这个作者很懒,什么都没留下…
展开
-
Java源码分析--Object
Java源码分析—Object本文的分析基于JDK 1.8 1.void registerNatives()private static native void registerNatives(); static { registerNatives(); } 该方法只是对几个本地方法进行注册(即初始化java方法映射到C的方法)。需要注意的是,很原创 2018-01-12 15:03:03 · 427 阅读 · 0 评论 -
java源码分析---ReentrantLock(下)
ReentrantLock源码分析(下)本篇我们主要分析下ReentrantLock的unlock机制,首先看下unlock源码: public void unlock() { sync.release(1); }这里直接使用了AbstractQueuedSynchronizer的release方法,试图释放此锁。 如果当前线程是此锁所有者,则将保持计数减...原创 2018-02-12 16:07:38 · 203 阅读 · 0 评论 -
java源码分析---Vector
Vector源码解析1. 体系结构class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableVector继承了AbstractList,并实现了List、RandomAccess、Cloneabl...原创 2018-02-11 10:43:27 · 211 阅读 · 0 评论 -
java源码分析---WeakHashMap
WeakHashMap源码解析1. 体系结构class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>WeakHashMap与HashMap一样,都是继承AbstractMap并实现了Map接口。与HashMap的区别在于并没有实现Cloneable和Serializab...原创 2018-02-11 11:23:22 · 246 阅读 · 0 评论 -
java源码分析---String类
String类源码解析1. 体系结构 首先看下源码:final class String implements java.io.Serializable, Comparable<String>, CharSequenceString类是一个final类,因此是不可变的、线程安全的,并实现了Serializable、Comparable和CharSequence接口,S...原创 2018-02-11 15:50:11 · 888 阅读 · 0 评论 -
java源码分析---String、StringBuffer、StringBuilder探索
String、StringBuffer、StringBuilder探索String源码解析在这片博文中我们解析了String相关的构造方法和常用方法,既然有了String类,为何还要有StringBuffer和StringBuilder类呢? 首先我们先看一段代码:public class StringTest { public static void main(String[]...原创 2018-02-11 16:28:59 · 267 阅读 · 0 评论 -
java源码分析--Lock与Condition
Lock与Condition源码解析Lock与Condition接口位于java.util.concurrent.locks包中,Lock接口:多线程在JDK1.5版本升级时,推出一个接口Lock接口。解决线程安全问题使用同步的形式,(同步代码块,要么同步函数)其实最终使用的都是锁机制。到了后期版本,直接将锁封装成了对象。线程进入同步就是具备了锁,执行完,离开同步,就是释放了锁。在后期对锁的分...原创 2018-02-12 15:07:27 · 957 阅读 · 0 评论 -
java源码分析---ReentranLock(上)
ReentranLock源码解析(上)ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。 顾名思义,ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁,可以被单个线程多次获取。 ReentrantLock分为“公平锁”和“非公平锁”。它们的区别体现在获取锁的机制上是否公平。“锁”是为了保护竞争资源,防止多个线程同...原创 2018-02-12 15:54:46 · 371 阅读 · 0 评论 -
java源码分析---Semaphore
Semaphore源码分析前面我们分析了ReentrantLock,通过查看Semaphore的源码发现其与ReentrantLock非常类似,接下来我们就详细的分析下Semaphore。 Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个...原创 2018-02-12 16:36:55 · 232 阅读 · 0 评论 -
java9新特性
1.目录结构 2.repl工具 jShell命令 3.模块化 4.多版本兼容jar包 5.接口方法的改进(在接口中 jdk7 只能声明全名常量和抽象方法 jdk8 添加了静态方法和默认方法 jdk9添加了私有方法)6.钻石操作符升级 可以有{} 7.异常处理try升级 8.下划线标识符命名的限制 _ 不允许了 9.String底...转载 2018-04-23 19:17:11 · 235 阅读 · 1 评论 -
HashMap、HashTable等中的hash()方法分析
HashMap、HashTable等中的hash()方法分析HashMap、HashTable、ConcurrentHashMap是非常常用的、应用广泛的数据类型,关于他们的内部结构网上的文章很多这里就不过多的分析了,本文主要分析其内部的hash()方法。这里首先问下,你知道HashMap中hash方法的具体实现吗?你知道HashTable、ConcurrentHashMap中hash方法的实...原创 2018-05-11 11:02:38 · 702 阅读 · 0 评论 -
深入分析ThreadLocal
1. ThreadLoacal是什么?ThreadLocal是啥?以前面试别人时就喜欢问这个,有些伙伴喜欢把它和线程同步机制混为一谈,事实上ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。那么ThreadLocal到底是什么呢? API是这样介绍它的:This class provides thr...转载 2018-05-28 20:20:16 · 286 阅读 · 0 评论 -
java源码分析---集合类汇总
集合类汇总1. 集合的产生 通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 2. ...原创 2018-02-12 08:59:25 · 751 阅读 · 0 评论 -
java源码分析---ReadWriteLock(下)
java源码分析—ReadWriteLock(下)1. java源码中的ReadWriteLock的实现 Java并发库中ReetrantReadWriteLock实现了ReadWriteLock接口并添加了可重入的特性。 2. 特性 ReentrantReadWriteLock有如下特性: (1)获取顺序 - 非公平模式(默认) 当以非公平初始化时,读锁和写锁的获取的...原创 2018-02-26 11:47:56 · 290 阅读 · 0 评论 -
java源码分析---Reference、ReferenceQueue
Reference、ReferenceQueue源码解析在分析WeakHashMap源码的过程中我们接触到了Reference、ReferenceQueue两个类,以前自己只是知道这些类的存在,在看WeakHashMap源码之前并不知道他们的用途,今天就对着两个类进行分析 1. Reference 为什么需要Reference对象? 我们知道在我们的程序运行的时候,如果一个gc 想...原创 2018-02-11 15:01:05 · 383 阅读 · 0 评论 -
Java源码分析---Thread
Java源码分析之Thread1、java虚拟机允许应用程序多线程并发执行,线程拥有优先级, jvm只有两种线程: - daemon 线程(后台线程):jvm自己用,如一个线程自动执行垃圾收集。A daemon thread is ordinarily a thread used by the virtual machine itself, such as a thread that p原创 2018-01-26 10:25:47 · 332 阅读 · 0 评论 -
java集合类详解
java集合类详解1. java集合类图1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。 发现一...转载 2018-02-09 10:33:36 · 496 阅读 · 0 评论 -
java源码分析---ArrayList
ArrayList源码分析1. ArrayList继承体系结构class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable从源码可以看到ArrayList类主要是继承Abstrac...原创 2018-02-09 11:20:30 · 267 阅读 · 0 评论 -
java源码分析---LinkedList
LinkedList源码分析1、LinkedList体系结构public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable通过源码我们看到Li...原创 2018-02-09 15:27:14 · 306 阅读 · 0 评论 -
java源码分析---Hashtable
Hashtable源码分析1、Hashtable体系结构public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable由源码看到Hashtable继承了Dictionary,并实现了Map,...原创 2018-02-09 16:11:02 · 251 阅读 · 0 评论 -
java源码分析---HashMap
HashMap源码分析1、HashMap体系结构class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, SerializableHashMap继承了AbstractMap,并实现了Map,Cloneable,Serializable接口,HashM...原创 2018-02-09 17:16:56 · 254 阅读 · 0 评论 -
java源码分析---LinkedHashMap
LinkedHashMap源码分析1. 体系结构class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>通过源码看到LinkedHashMap继承了HashMap,并实现了Map接口,为什么要这样设计呢? 之所以这样设计,我想有一下几个原因: 1.LinkedHashMap...原创 2018-02-11 09:49:03 · 210 阅读 · 0 评论 -
java源码分析---HashSet
HashSet源码分析1. 体系结构 源码如下:class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable通过源码我们看到HashSet继承了AbstractSet,并实现了Set,Cloneable,Seri...原创 2018-02-11 10:09:13 · 190 阅读 · 0 评论 -
java源码分析---LinkedHashSet
LinkedHashSet源码分析1. 体系结构class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.SerializableLinkedHashSet继承了HashSet,并实现了Set、Cloneable、Serializabel接口,具体的...原创 2018-02-11 10:18:20 · 193 阅读 · 0 评论 -
java源码分析---stack
stack源码分析1. 体系结构class Stack<E> extends Vector<E>不看源码之前真心不知道Stack是继承自Vector来实现的,而且Stack只是在Vector的基础上提供了几个方法罢了。因此,如果有了上篇Vector源码的基础,看这个就相当相当简单了 2. 构造函数 public Stack() { }构...原创 2018-02-11 10:49:52 · 180 阅读 · 0 评论 -
java源码分析---ReadWriteLock(上)
**java源码分析—ReadWriteLock(上)** 1. 体系结构 以下是ReadWriteLock接口的源码/** * A {@code ReadWriteLock} maintains a pair of associated {@link * Lock locks}, one for read-only operations and one for writ...原创 2018-02-26 10:24:00 · 282 阅读 · 0 评论 -
JUC系列-Executor框架
1. 什么是线程池线程池:管理一组工作线程的资源池。2. 为什么使用线程池 1.避免反复创建回收线程,降低资源消耗。 2.提供线程的可管理性。 3.提高响应速度3. 如何创建线程池ThreadPoolExecutor是jdk提供的线程池的服务类,基于ThreadPoolExecutor可以很容易将一个实现Runnable接口的任务放入线程池中执行,下面是Thr...原创 2018-06-06 20:41:31 · 498 阅读 · 0 评论