Spring Framework框架解析(1)- 从图书馆示例来看xml文件的加载过程

引言 这个系列是我阅读Spring源码后的一个总结,会从Spring Framework框架的整体结构进行分析,不会先入为主的讲解IOC或者AOP的原理,如果读者有使用Spring的经验再好不过。鉴于每个人对源码阅读角度的不同,如果文中存在理解有误的地方希望读者能够及时提出,共同进步。文章所分析的源 ... »

Java并发(11)- 有关线程池的10个问题

引言 在日常开发中,线程池是使用非常频繁的一种技术,无论是服务端多线程接收用户请求,还是客户端多线程处理数据,都会用到线程池技术,那么全面的了解线程池的使用、背后的实现原理以及合理的优化线程池的大小等都是非常有必要的。这篇文章会通过对一系列的问题的解答来讲解线程池的基本功能以及背后的原理,希望能对 ... »

Java并发(10)- 简单聊聊JDK中的七大阻塞队列

引言 JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列。阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法。他的主要使用场景就是多线程下的生产者消费者模式,生产者线 ... »

Java并发(9)- 从同步容器到并发容器

引言 容器是Java基础类库中使用频率最高的一部分,Java集合包中提供了大量的容器类来帮组我们简化开发,我前面的文章中对Java集合包中的关键容器进行过一个系列的分析,但这些集合类都是非线程安全的,即在多线程的环境下,都需要其他额外的手段来保证数据的正确性,最简单的就是通过synchronized ... »

Java并发(8)- 读写锁中的性能之王:StampedLock

在上一篇《你真的懂ReentrantReadWriteLock吗?》中我给大家留了一个引子,一个更高效同时可以避免写饥饿的读写锁 StampedLock。StampedLock实现了不仅多个读不互相阻塞,同时在读操作时不会阻塞写操作。 为什么StampedLock这么神奇?能够达到这种效果,它的核心 ... »

Java并发(7)- 你真的了解ReentrantReadWriteLock吗?

引言 在前几篇文章中了解了ReentrantLock、Semaphore与CountDownLatch后,J.U.C包中基于AQS实现的并发工具类还剩一个比较重要的:读写锁ReentrantReadWriteLock。读写锁在Java面试过程中是一个经常性考的题目,他涉及到的知识点比较多,导致很多人 ... »

Java并发(6)- CountDownLatch、Semaphore与AQS

引言 上一篇文章中详细分析了基于AQS的ReentrantLock原理,ReentrantLock通过AQS中的state变量0和1之间的转换代表了独占锁。那么可以思考一下,当state变量大于1时代表了什么?J.U.C中是否有基于AQS的这种实现呢?如果有,那他们都是怎么实现的呢?这些疑问通过详细 ... »

Java并发(2)- 聊聊happens-before

引言 上一篇文章聊到了Java内存模型,在其中我们说JMM是建立在happens before(先行发生)原则之上的。 为什么这么说呢?因为在Java程序的执行过程中,编译器和处理器对我们所写的代码进行了一系列的优化来提高程序的执行效率。这其中就包括对指令的“重排序”。 重排序导致了我们代码并不会按 ... »

Java并发(1)- 聊聊Java内存模型

引言 在计算机系统的发展过程中,由于CPU的运算速度和计算机存储速度之间巨大的差距。为了解决CPU的运算速度和计算机存储速度之间巨大的差距,设计人员在CPU和计算机存储之间加入了高速缓存来做为他们之间的桥梁,在运算时,先将数据拷贝到高速缓存中,计算完成后再将结果写入计算机存储,这样大大提高了计算效率 ... »

Java集合(5)一 HashMap与HashSet

目录 "Java集合(1)一 集合框架" "Java集合(2)一 ArrayList 与 LinkList" "Java集合(3)一 红黑树、TreeMap与TreeSet(上)" "Java集合(4)一 红黑树、TreeMap与TreeSet(下)" "Java集合(5)一 HashMap与H ... »

Java集合(2)一 ArrayList 与 LinkList

目录 "Java集合(1)一 集合框架" "Java集合(2)一 ArrayList 与 LinkList" "Java集合(3)一 红黑树、TreeMap与TreeSet(上)" "Java集合(4)一 红黑树、TreeMap与TreeSet(下)" Java集合(5)一 HashMap与Ha ... »

Java集合(1)一 集合框架

目录 "Java集合(1)一 集合框架" Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树、TreeMap与TreeSet(上) java集合(4)一 红黑树、TreeMap与TreeSet(下) Java集合(5)一 HashMap与HashSet ... »