jdk源码分析
文章平均质量分 80
wangjiang87
一个热爱java的帅哥
展开
-
ArrayBlockingQueue源码分析
ArrayBlockingQueue 源码原创 2017-10-31 09:33:27 · 369 阅读 · 0 评论 -
LinkedList源码分析
LinkedList虽然和ArrayList都实现了List接口,但两者的底层数据结构截然不同。从类名可以看出,ArrayList底层数据结构是数组,而LinkedList底层数据结构是双向链表。两者数据结构的优劣如下,ArrayList按下标查询元素速度快,但插入元素或者删除元素效率低,因为都设计到元素的大量移动,而LinkedList插入或删除元素速度较快,查询中间元素效率较低,因为查询元素需要原创 2017-11-28 14:59:11 · 156 阅读 · 0 评论 -
HashMap源码分析
HashMap应该算是工作中用到的频率最高的数据结构了,网上也有很多人分析过HashMap的源码,但为了加深印象,逼自己好好阅读源码,还是自己试着看源码进行一次自己的分析。正如类里注释所说:除了支持null值和null键,线程不安全之外,功能大致和HashTable一致。可以用常量时间get和put元素,HashMap不保证元素的顺序。HashMap的capacity和load factor两个属性原创 2017-11-29 19:53:45 · 171 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码分析
开始沉下心来好好分析jdk的类: 1.ThreadPoolExecutor中的主要变量:runState:线程池的状态 有三种:RUNNING:0;SHUTDOWN:1;STOP:2;TERMINATED:3,默认是0;BlockingQueue<Runnable> workQueue:所有要执行的任务;HashSet<Worker> workers:池中所有的线程,它的数量和poolSize原创 2017-11-30 09:39:11 · 262 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码分析
开始沉下心来好好分析jdk的类:1.ThreadPoolExecutor中的主要变量:runState:线程池的状态 有三种:RUNNING:0;SHUTDOWN:1;STOP:2;TERMINATED:3,默认是0;BlockingQueue workQueue:所有要执行的任务;HashSet workers:池中所有的线程,它的数量和poolSize保持一致;long k原创 2017-10-26 18:27:12 · 308 阅读 · 1 评论 -
ThreadPoolExecutor.Worker内部类分析
上一篇文章分析了ThreadPoolExecutor线程池类,明白了池中的线程和任务队列是如何工作的,文章链接:http://blog.csdn.net/wangjiang87/article/details/78672373,这篇文章分析下Worker内部类来了解下池中的线程数量是如何逆向减少的。 Worker是实现了Runnable接口,主要的成员变量: Runnable firstTask原创 2017-11-30 10:01:59 · 644 阅读 · 1 评论 -
ThreadPoolExecutor.Worker内部类分析
上一篇文章分析了ThreadPoolExecutor线程池类,明白了池中的线程和任务队列是如何工作的,这篇文章分析下Worker内部类来了解下池中的线程数量是如何逆向减少的。Worker是实现了Runnable接口,主要的成员变量:Runnable firstTask:执行run方法中的循环中第一个要执行的任务,有可能为nullThread thread:work就是执行在这个线程当中原创 2017-10-27 16:01:36 · 627 阅读 · 0 评论 -
LinkedHashMap源码分析
LinkedHashMap是HashMap的一个子类,底层存储结构和HashMap一样,也是数组+Entry链表,不过这个Entry和HashMap中的Entry稍微有点区别,后面会详细介绍。put操作和get的大部分操作都是调用的HashMap方法来完成的.LinkedHashMap比HashMap多了什么功能呢?多了一个通过迭代器迭代所有元素时可以按照插入时的顺序进行迭代的功能。这个维持插入顺序原创 2017-12-08 17:53:53 · 131 阅读 · 0 评论