1. Concurrent相关历史 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器(bins)时,吞吐量严重降低.因此Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了Java.util.concurrent包,在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点挺符…
声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合中去 <2. 集合中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正需要的类型即放置进行的类型 ArrayList list = new ArrayList(); list.add(new Integer(4)); list.add…
◆ ArrayList简介 ◆ ArrayList 是一个数组队列,相当于 动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口. AbstractList.List提供了添加.删除.修改.遍历等功能. RandmoAccess提供了随机访问功能 Cloneable提供了可以被克隆的功能 Serializable提供了序列化的功能 和Vector…
一.背景知识 在阅读开源框架源码时,发现许多框架都支持SPI(Service Provider Interface ),前面有篇文章JDBC对Driver的加载时应用了SPI,参考[Hibernate实战]源码解析Hibernate参数绑定及PreparedStatement防SQL注入原理,于是借着JDBC对Driver的加载实现,分析下SPI机制. 二.什么是SPI 看下Wikipedia对其的解释 Service Provider Interface (SPI) is an API int…
一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clone()与toArray()9.遍历数据:Iterator()二.ListItr 一.源码解析 1. LinkedList类定义. public class LinkedList<E> extends AbstractSequentialList<E> implements List&…
引言 关于java中的不常见模块,让我一下子想我也想不出来,所以我希望以后每次遇到的时候我就加一篇.上次有人建议我写全所有常用的Map,所以我研究了一晚上LinkedHashMap,把自己感悟到的解释给大家.在本篇博文中,我会用一个例子展现LinkedHashMap的运行和初始化情况,展示LinkedHashMap的数据存储情况,同时用JDK1.8中它的源代码解释给大家.其实,在以前的博文中我就已经粗略的介绍过了,关于缓存机制的实现:http://blog.csdn.net/u012403290…
线程池 假如没有线程池,当存在较多的并发任务的时候,每执行一次任务,系统就要创建一个线程,任务完成后进行销毁,一旦并发任务过多,频繁的创建和销毁线程将会大大降低系统的效率.线程池能够对线程进行统一的分配,通过固定数量的线程来负责处理任务,避免了频繁的创建和销毁对象,使线程能够重复的利用,执行多个任务. Java线程池的结构 Executor 最顶层接口,仅有execute方法.真正的线程池接口应该是它的子接口ExecutorService ExecutorService接口,主要对Executo…
Java 中的 ThreadLocal是线程内的局部变量, 它为每个线程保存变量的一个副本.ThreadLocal 对象可以在多个线程中共享, 但每个线程只能读写其中自己的副本. 目录: 代码示例 源码解析 InheritableThreadLocal ThreadLocalMap Get 流程 Set 流程 Remove 代码示例 我们编写一个简单的示例: import java.util.Random; import java.util.concurrent.ExecutorService;…
目录 HashSet源码解析 HashSet简单使用的demo HashSet中的变量 HashSet的构造函数 HashSet的add方法 HashSet的iterator方法 HashSet的size方法 HashSet的isEmpty方法 HashSet的remove和clear方法 CopyOnWriteArraySet源码解析 CopyOnWriteArraySet的构造函数 CopyOnWriteArraySet的add方法 CopyOnWriteArraySet的remove方法…
package java.util.concurrent; import java.io.ObjectStreamField; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import jav…