![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java源码解析
那些离我而去的时光
这个作者很懒,什么都没留下…
展开
-
Java源码之ArrayList
总体介绍 Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。Set和List两个类继承于它。Set中不能包含重复的元素,也没有顺序来存放。而List是一个有序的集合,可以包含重复的元素。 而Map又是另一个接口,它和Collection接口没有关系。Map包含了key-value键值对,同一个Map里key是不能重复的,而不同key原创 2017-12-05 21:44:04 · 209 阅读 · 0 评论 -
HashMap源码解析
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap原创 2018-01-21 18:33:18 · 206 阅读 · 0 评论 -
LinkedList源码解析
LinkedList内部就是由链表的形式实现。它并没有用数组来存储数据元素,而是由一个个Node类型结点来储存数据, 然后每个Node结点通过指向前后结点的next和prev指针将整个List串联起来 看一下成员变量 transient int size = 0; 长度transient NodeE> first; 链表第一个节点的引用transient NodeE> la原创 2018-01-06 14:41:54 · 181 阅读 · 0 评论 -
Synchronized原理解析
Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法,属于重量级锁。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法: (1)修饰普通方法 (2)修饰静态方法 (3)修饰代码块原创 2018-01-08 21:43:43 · 340 阅读 · 0 评论 -
ThreadPoolExecutor源码解析
创建线程池最终都会调用下面这个方法 对上面参数做一下简单讲解 corePoolSize 线程池中核心线程数 maximumPoolSize 线程池中最大线程数 keepAliveTime 线程池中空闲线程存活时间 TimeUnit keepAliveTime的单位 workQueue 阻塞队列BlockingQueue 实例 threadFactory 线程工厂, 用于原创 2018-02-01 15:34:49 · 266 阅读 · 0 评论 -
ConcurrentHashMap源码分析
HashMap :先说HashMap,HashMap是线程不安全的,在并发环境下,可能会形成环状链表(扩容时可能造成,具体原因自行百度google或查看源码分析),导致get操作时,cpu空转,所以,在并发环境中使用HashMap是非常危险的。 HashTable : HashTable和HashMap的实现原理几乎一样,差别无非是1.HashTable不允许key和value为null原创 2018-01-26 13:46:12 · 202 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock是Java并发包中提供的一个可重入的互斥锁。ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性。只不过相比原生的Synchronized,ReentrantLock增加了一些高级的扩展功能,比如它可以实现公平锁,同时也可以绑定多个Conditon。 AbstractQueuedSynchronizer Reen原创 2018-01-30 11:05:08 · 249 阅读 · 0 评论