JDK源码
顽石上的温度
别太急,慢慢来或许更快
展开
-
Object源码解析
Object类源码解析Class Object是类Object结构的根。 每个班都有Object作为超类。 所有对象(包括数组)都实现了这个类的方法。源码如下:package java.lang;public class Object {private static native void registerNatives();static { registerNatives()...原创 2019-05-07 09:32:38 · 156 阅读 · 0 评论 -
TreeMap原理剖析
简介:TreeMap是基于红黑树(一种自平衡的二叉查找树)实现的一个有序性的Map。注意该类并不是线程安全的,可以使用Collections.synchronizedSortedMap方法包装TreeMap使之转化成线程安全的map。要了解TreeMap必须先了红黑树原理。TreeMap类图结构:红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),是一种特殊的平衡二...原创 2019-05-25 15:38:29 · 329 阅读 · 0 评论 -
HashTable和HashMap的区别
HashTable和HashMap的区别:1 该类实现了一个哈希表,HashTable的key和value都不可以为null。HashMap中key和value均可为null。2 HashTable默认初始容量11,负载因子0.75;HashMap默认初始容量16,负载因子0.75。Hashtable不要求底层数组的容量一定要为2的整数次幂,扩容后的大小: old2+1;而HashMap则要求...原创 2019-05-21 16:32:20 · 187 阅读 · 0 评论 -
CyclicBarrier原理解析
简介:CyclicBarrier顾名思义是循环栅栏,和CountDownLatch非常功能非常相似,它也可以实现线程间的计数等待,但是它比CountDownLatch功能更加强大:它的内存屏障可以循环使用,它可以在等待的线程被释放之后重新使用。示例:public class CyclicBarrierTest { // 创建CyclicBarrier 示例,并初始化需要等待的线程数量...原创 2019-05-16 10:43:07 · 193 阅读 · 0 评论 -
ConcurrentHashMap原理解析
简介:ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,数据结构(1.7到1.8)变更为了数组+单向链表+红黑树的结构,取消了 segment 分段设计,直接使用 Node 数组来保存数据。类图结构:...原创 2019-05-21 10:02:22 · 301 阅读 · 0 评论 -
CountDownLatch深度解析
说明:CountDownLatch可以看成是一个倒计数器。用给定的计数初始化,计数器的初始值为线程的数量,每当一个线程调用countDown(),计数器的值就会减1。 await方法用于阻塞当前线程,直到计数器为0时才恢复执行,并且任何后续的await 调用立即返回。CountDownLatch是一次性的,计数器的值只能在构造方法中初始化一次,之后没有任何机制再次对其设置值,当CountDow...原创 2019-05-15 15:50:39 · 418 阅读 · 0 评论 -
Integer源码解析
说明:Integer类包装一个对象中的原始类型int的值。 类型为Integer的对象包含一个单一字段,其类型为int 。此外,该类还提供了一些将int转换为String和String转换为int ,以及在处理int时有用的其他常量和方法。int 数据类型是32位、有符号的以二进制补码表示的整数。类图结构:源码解析:package java.lang;public final clas...原创 2019-05-07 20:07:21 · 262 阅读 · 0 评论 -
HashMap深度解析
简介:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 HashTable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间...原创 2019-05-20 10:29:17 · 223 阅读 · 0 评论 -
Short源码解析
说明:Short类在一个对象中包含一个基本类型short的值。 类型为Short的对象包含一个类型为short的单个字段。此外,该类还提供了几种将short转换为String和String转换为short ,以及在处理short时有用的其他常数和方法。short 数据类型是 16 位、有符号的以二进制补码表示的整数。类图结构:源码解析:package java.lang;public ...原创 2019-05-07 15:17:50 · 428 阅读 · 0 评论 -
ThreadLocal深度剖析
ThreadLocal作用:为每个线程创建一个副本,然后当前线程修改了该副本的值后而不会影响其他线程的值,各个变量之间相互不影响。注意:每个线程在获取实例中的值时,必须先对改值进行初始化,否知获得的值为null。代码示例如下:public class ThreadLocalTest {// 通过set()方法初始化private static final ThreadLocal tlIn...原创 2019-05-14 17:59:38 · 207 阅读 · 0 评论 -
Byte源码解析
说明:Byte类在一个对象中包含一个基本类型byte的值。 类型为Byte的对象包含一个单一字段,其类型为byte 。此外,该类还提供了一些将byte转换为String和String转换为byte ,以及在处理byte时有用的其他常量和方法。类图结构:源码如下:package java.lang;public final class Byte extends Number imple...原创 2019-05-07 11:44:40 · 513 阅读 · 0 评论 -
如何优雅的使用java线程池
简介:在java开发中我们对“池”的概念并不陌生,常见的有数据库连接池、线程池、对象池、常量池等等,其作用基本上就是避免频繁的创建和回收,造成资源浪费,线程池也不例外。创建线程池的好处:降低创建线程和销毁线程的性能开销。提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立马执行。合理的设置线程池大小可以避免因为线程数超过硬件资源瓶颈带来的问题。创建线程池:阿里java开发...原创 2019-05-28 15:16:22 · 954 阅读 · 0 评论