
源码学习
文章平均质量分 68
久梦歌行
欢迎关注公众号:蜜蜂技术巢
展开
-
Spring源码解析之DefaultListableBeanFactory
DefaultListableBeanFactory是bean加载的核心部分,是Spring注册及加载的默认实现。它的层次关系如下图 BeanFactory它是Spring中Bean容器的顶级接口。里面有获取bean,判断是否包含bean,是否单例,获取别名等基本方法ListableBeanFactory根据条件获取Bean的配置清单。 如String[] getBeanDefinitionNa原创 2016-06-06 23:30:00 · 2802 阅读 · 1 评论 -
ThreadLocal源码解析
这个类提供了线程变量,这不同于其他的变量,它能在多线程环境下访问(通过get或set方法访问)时能保证各个线程里的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的。使用示例:public static void main(String[] args) { ThreadLocal<String> str = new Thread原创 2016-06-30 21:35:37 · 394 阅读 · 0 评论 -
阻塞队列之ArrayBlockingQueue
阻塞队列 当使用阻塞队列的时候,它可能会对当前线程产生阻塞,,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒。部分实现ArrayBlockingQueue是使用数组作为底层存储的。 /** 数组存储 */ private final E[] items; /** 队尾下标 */ pr原创 2016-07-24 23:26:39 · 4467 阅读 · 0 评论 -
ArrayDeque源码解析
ArrayDeque是一个双端队列,它是线程不安全的,不能插入null元素,当使用栈时比Stack要快,当使用队列时比LinkedList要快。先初始化一个一定大小的数组,大小是2的n次方,接下来看下添加的源码。public void addFirst(E e) { if (e == null) throw new NullPointerException(原创 2016-07-02 21:39:55 · 570 阅读 · 0 评论 -
Java线程池ThreadPoolExecutor
为什么使用线程池如果每次使用线程都创建,每次创建和销毁的开销会很大,线程池主要用来解决线程生命周期开销问题和资源不足问题,也消除了线程创建所带来的延迟。线程池分析先看下构造函数,其他构造函数都是调用此构造函数public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,原创 2016-08-19 10:00:14 · 537 阅读 · 0 评论