
JDK源码学习
windcpp
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java.util.HashMap源码学习(一)
java.util.HashMap: table数组中存放的是单向链表Entry,Entry中存放的实际数据,一个链表中可能有多个数据,由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位,就是利用了这一特点。不需要对所有数据进行迭代,利用key的hashCode快速找到“桶位”,然后只在桶位中单向链表中的少量数据中进行迭代,所以速度很快...2011-02-01 11:09:57 · 122 阅读 · 0 评论 -
java.util.concurrent.Executors源码学习(三)
Executors中的重要方法(续): 8. ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) 创建一个计划任务线程池,池中的worker线程数中有一个。处理的任务放在一个延迟任务队列(DelayedWorkQueue)中,产生新线程的工厂为threadFacto...2011-02-01 11:43:45 · 93 阅读 · 0 评论 -
java.util.concurrent.Executors源码学习(二)
Executors中的重要方法(续): 5. ExecutorService newCachedThreadPool() 创建一个线程池,根据需要来产生新的线程,同时可以重用现成的可用线程。处理的任务存放在一个队列同步队列(SynchronousQueue)中。如果线程池中的线程闲置60秒,则此线程将被终止,移出线程池。 6. ExecutorService newCachedThr...2011-02-01 11:41:58 · 118 阅读 · 0 评论 -
java.util.concurrent.Executors源码学习(一)
java.util.concurrent.Executors: 工厂类,提供了一些工具方法。支持以下各种方法: 1. 创建并返回设置有常用配置字符串的 ExecutorService 的方法。 2. 创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。 3. 创建并返回“包装的”ExecutorService 方法,它通过使特定于实现的方...2011-02-01 11:39:04 · 124 阅读 · 0 评论 -
java.util.concurrent.ExecutorService(二)
ExecutorService中重要的方法(续): 6. Future submit(Callable task) 提交一个有返回值的任务,并返回一个Future。使用Future的get方法来取得任务执行的结果。 7. Future submit(Runnable task, T result) 提交一个Runnable任务,并返回一个Future。使用Future的ge...2011-02-01 11:37:07 · 175 阅读 · 0 评论 -
java.util.concurrent.ExecutorService(一)
java.util.concurrent.ExecutorService: ExecutorService扩展了Executor并添加了一些生命周期管理的方法,同时提供一个Future用来监控异步任务的执行过程。一个Executor的生命周期有三种状态,运行 ,关闭 ,终止 。Executor创建时处于运行状态。当调用ExecutorService.shutdown()后,处于关闭状态,is...2011-02-01 11:36:04 · 146 阅读 · 0 评论 -
java.util.concurrent.LinkedBlockingDeque源码学习(三)
LinkedBlockingDeque中的重要方法(续): 16. E takeFirst()==E take() 17. E takeLast() 在锁定状态下删除处在队列头/尾的节点。调用unlinkFirst/unlinkLast方法。如果队列为空则当前线程进入等待区 18. void addFirst(E e)== void push(E e) 19. void addLas...2011-02-01 11:33:42 · 134 阅读 · 0 评论 -
java.util.concurrent.LinkedBlockingDeque源码学习(二)
LinkedBlockingDeque中的重要方法: 1. boolean linkFirst(E e) 2. boolean linkLast(E e) 插入一个节点到队列头/尾。如果队列已满,则返回false,否则生成一个节点并插入队列,然后唤醒一个等待notEmpty条件的线程,返回true 3. E unlinkFirst() 4. E unlinkLast() 删除处在队...2011-02-01 11:32:22 · 131 阅读 · 0 评论 -
java.util.concurrent.LinkedBlockingDeque源码学习(一)
java.util.concurrent.LinkedBlockingDeque: 拥有单个锁的双向阻塞队列。它使用了conditions来控制阻塞。操作时不满足条件时,操作终止或等待条件满足。 LinkedBlockingDeque中的重要字段: 1. private transient Node first 队列中第一个节点 2. private transient Node...2011-02-01 11:30:39 · 181 阅读 · 0 评论 -
java.util.concurrent.ConcurrentHashMap源码学习(四)
ConcurrentHashMap中内部类Segment的重要方法 重要方法: a) static final Segment[] newArray(int i) 创建指定大小的Segment数组。 b) HashEntry getFirst(int hash) 得到当前段指定槽位的第一个Entry。 c) V readValueUnderLock(HashEntry e...2011-02-01 11:29:33 · 104 阅读 · 0 评论 -
java.util.concurrent.ConcurrentHashMap源码学习(三)
ConcurrentHashMap中的内部类: 1. static final class HashEntry 每个段中链表元素的节点。其中的next字段是final的,不能修改,所以不能在这个节点的下面添加新节点,只能在它的前面添加。 2. static final class Segment extends ReentrantLock implements Serializabl...2011-02-01 11:27:08 · 143 阅读 · 0 评论 -
java.util.concurrent.ConcurrentHashMap源码学习(二)
ConcurrentHashMap中重要的方法: 1. V get(Object key) 先从segments数组中取出对应的段Segment,然后再取到对应key的value值。 2. V put(K key, V value) 先从segments数组中取出对应的段Segment,然后对key赋值。当value为null时抛出NullPointerException异常 ...2011-02-01 11:24:35 · 119 阅读 · 0 评论 -
java.util.concurrent.ConcurrentHashMap源码学习(一)
java.util.concurrent.ConcurrentHashMap: ConcurrentHashMap是支持高并发、高吞吐量的线程安全的HashMap实现。它允许多个修改操作并发进行,关键在于使用了多个锁来控制对hash表的不同部分(Segment)进行的修改。每个段是一个小的hash table,有自己的锁,只要修改操作发生在不同的段上,就可以并发进行。在执行跨段的操作时首先尝...2011-02-01 11:22:08 · 127 阅读 · 0 评论 -
java.util.LinkedHashMap源码学习(二)
LinkedHashMap中重要的方法: 1. void clear() 调用HashMap中的clear方法清空数据,同时设置before和after都指向header。 2. boolean containsValue(Object value) 重写了HashMap中的containsValue方法,现在查询和table的容量无关了,只与实际存储的数据量有关。 3. V...2011-02-01 11:20:33 · 106 阅读 · 0 评论 -
java.util.LinkedHashMap源码学习(一)
java.util.LinkedHashMap: LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。 LinkedHashMap中重要的字段: 1. ...2011-02-01 11:19:26 · 185 阅读 · 0 评论 -
java.util.HashMap源码学习(二)
HashMap中重要的方法: 1. public V put(K key, V value) HashMap中允许key为null,当key为null时,调用private V putForNullKey(V value)把对应的Entry放到table[0]位置。如果key不为null,利用key计算hash码,从而得到对应的table下标,如果Entry e = table[i]已经存...2011-02-01 11:17:41 · 108 阅读 · 0 评论 -
asdfasfd
http://www.laomaotao.net/?H9197原创 2014-04-12 17:11:58 · 223 阅读 · 0 评论