- 博客(8)
- 收藏
- 关注
原创 Java并发容器之ConcurrentLinkedQueue源码分析
1ConcurrentLinkedQueue概述在并发编程中,我们经常使用线程安全的队列,Java为此提供了两种模式的队列:一个以ConcurrentLinkedQueue为代表的高性能队列 ;一个是以BlockingQueue接口为代表的阻塞队列。阻塞队列使用一把锁(入队和出队共享一把锁)或者两把锁(入队、出队各一把锁)来实现线程安全,BlockingQueue是典型的代表;非阻塞...
2019-07-10 16:51:53
159
原创 IoC容器的初始化过程详解
首先我们了解一下使用IoC容器之前的几个步骤:创建IoC配置文件的抽象资源,这个抽象资源包含了BeanDefinition的定义信息 创建一个BeanFactory 创建一个载入BeanDfinition的读取器,这里使用XMLBeanDefinitionReader对象来载入XML文件形式的BeanDefinition,通过一个回调配置给BeanFactory 从定以好的资源位置读入配...
2019-06-25 19:31:33
488
原创 JDK1.8下ArrayList的自动扩容机制
ArrayList的几个成员变量 private static final int DEFAULT_CAPACITY = 10;//数组默认初始容量 /** * 定义一个空的数组实例以供其他需要用到空数组的地方调用 */ private static final Object[] EMPTY_ELEMENTDATA = {}; ...
2019-06-03 16:41:17
962
原创 JAVA锁体系、CAS、AQS详细讲解
## **Java的锁体系**1. 悲观锁:悲观锁的实现是synchronized关键字和接口Lock的实现类,适用写的操作多的场景2. 乐观锁:乐观锁的实现是CAS算法,例如并发包下的AtomicInteger类的原子自增是CAS的自旋操作实现,下面会根据源码分析CAS算法和自旋;## CAS算法源码分析和应用场景CAS(compareAndSwap),比较和交换,是一种...
2019-05-28 10:49:58
653
原创 为什么重写equals还要重写hashcode
在定义的类重写equals方法的同时为什么一定要重写JDK本地的hashcode方法呢?我们从两者的本质上出发去解决这个问题hashcode()方法时本地方法,返回的是对象的内存地址,object类的equals方法比较的就是对象的内存地址,所以说如果equals相等,说明两个对象的地址也相等;反之,如果hashcode()的返回值相同,equals会是true吗?答案是不一定,原因;哈希...
2019-05-23 22:26:33
148
翻译 详解Java中equals和==的区别
String s1 = new String("string"); String s2 = new String("string"); System.out.println(s1 == s2);//false System.out.println(s1.equals(s2));//true首先看上面的代码,两个结果的输出不一样,让我们来探讨一下是如何产生这种差...
2019-05-23 20:39:35
109
原创 volatile保证可见性但不保证原子性的深入分析
Java垃圾回收中,关于jvm运行时刻的内存分配,其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈;线程栈保存了线程运行时变量值信息,当线程访问某一个对象的值的时候,首先通过对象的引用找到对应在堆内存中的变量的值,然后把堆内存中变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值;在修改完之后的某个时刻...
2019-05-05 14:58:33
686
1
原创 关于HashMap令面试官眼前一亮的回答
面试中的HashMap实现为什么要深入了解HashMap的内部实现HashMap是互联网公司面试最频繁的知识点之一,而很少问及List的的实现类,与因为List的实现过于简单,所以掌握HashMap的原理会让你在面试中获得先机。哈希表哈希表(hash table)也叫散列表,是一种非常重要的数据结构,在通用的数据结构中,哈希表的增删改查速度是最快的,哈希表存储的是键值对,其查找的时间复杂度...
2019-05-03 16:00:42
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人