- 博客(20)
- 资源 (4)
- 收藏
- 关注
测试spring中的org.springframework.beans.factory.InitializingBean
MyInitBean.java[code="java"]import org.springframework.beans.factory.InitializingBean;public class MyInitBean implements InitializingBean { @Override public void afterPropertiesSet() t...
2011-02-01 15:54:52
1071
java.util.concurrent.Executors源码学习(三)
Executors中的重要方法(续):8. ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)创建一个计划任务线程池,池中的worker线程数中有一个。处理的任务放在一个延迟任务队列(DelayedWorkQueue)中,产生新线程的工厂为threadFacto...
2011-02-01 11:43:45
90
java.util.concurrent.Executors源码学习(二)
Executors中的重要方法(续):5. ExecutorService newCachedThreadPool()创建一个线程池,根据需要来产生新的线程,同时可以重用现成的可用线程。处理的任务存放在一个队列同步队列(SynchronousQueue)中。如果线程池中的线程闲置60秒,则此线程将被终止,移出线程池。6. ExecutorService newCachedThr...
2011-02-01 11:41:58
116
java.util.concurrent.Executors源码学习(一)
java.util.concurrent.Executors:工厂类,提供了一些工具方法。支持以下各种方法:1. 创建并返回设置有常用配置字符串的 ExecutorService 的方法。 2. 创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。 3. 创建并返回“包装的”ExecutorService 方法,它通过使特定于实现的方...
2011-02-01 11:39:04
119
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
169
java.util.concurrent.ExecutorService(一)
java.util.concurrent.ExecutorService:ExecutorService扩展了Executor并添加了一些生命周期管理的方法,同时提供一个Future用来监控异步任务的执行过程。一个Executor的生命周期有三种状态,运行 ,关闭 ,终止 。Executor创建时处于运行状态。当调用ExecutorService.shutdown()后,处于关闭状态,is...
2011-02-01 11:36:04
141
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
131
java.util.concurrent.LinkedBlockingDeque源码学习(二)
LinkedBlockingDeque中的重要方法:1. boolean linkFirst(E e)2. boolean linkLast(E e)插入一个节点到队列头/尾。如果队列已满,则返回false,否则生成一个节点并插入队列,然后唤醒一个等待notEmpty条件的线程,返回true3. E unlinkFirst()4. E unlinkLast()删除处在队...
2011-02-01 11:32:22
128
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
165
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
102
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
139
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
112
java.util.concurrent.ConcurrentHashMap源码学习(一)
java.util.concurrent.ConcurrentHashMap:ConcurrentHashMap是支持高并发、高吞吐量的线程安全的HashMap实现。它允许多个修改操作并发进行,关键在于使用了多个锁来控制对hash表的不同部分(Segment)进行的修改。每个段是一个小的hash table,有自己的锁,只要修改操作发生在不同的段上,就可以并发进行。在执行跨段的操作时首先尝...
2011-02-01 11:22:08
124
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
104
java.util.LinkedHashMap源码学习(一)
java.util.LinkedHashMap:LinkedHashMap继承自HashMap,但它具有可预知的迭代顺序。LinkedHashMap维护着一个运行于所有条目的双重链表,此链表定义了迭代顺序,这个顺序可以是插入顺序或者是访问的顺序。基本操作和父类HashMap相似,它通过重写父类相关的方法来实现自己的双重链表特性。LinkedHashMap中重要的字段:1. ...
2011-02-01 11:19:26
174
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
103
java.util.HashMap源码学习(一)
java.util.HashMap:table数组中存放的是单向链表Entry,Entry中存放的实际数据,一个链表中可能有多个数据,由这些数据的Key可以算出hashCode得到在table中的相同的“桶位”。hashMap能实现快速定位,就是利用了这一特点。不需要对所有数据进行迭代,利用key的hashCode快速找到“桶位”,然后只在桶位中单向链表中的少量数据中进行迭代,所以速度很快...
2011-02-01 11:09:57
119
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人