面向对象的六原则一法则

面向对象的六原则一法则单一职责原则(Single-ResponsibilityPrinciple)其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它

TreeMap源码

TreeMap源码简介听名字就知道,TreeMap是由Tree和Map集合有关的,没错,TreeMap是由红黑树实现的有序的key-value集合。publicclassTreeMap<K,V>extendsAbstractMap<K,V>implementsNavigabl

LinkedHashMap源码

LinkedHashMap源码简介LinkedHashMap继承自HashMap,在HashMap基础上,通过维护一条双向链表,解决了HashMap不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上

LinkedList源码阅读

LinkedList源码简介LinkedList是一个实现了List接口和Deque接口的双端链表。LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性;LinkedList不是线程安全的,如果想使LinkedList

ArrayList源码分析

ArrayList源码ArrayList简介ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。它继承于AbstractLi

fail-fast和fail-safe

fail-fast和fail-safe什么是fail-fast首先我们看下维基百科中关于fail-fast的解释:Insystemsdesign,afail-fastsystemisonewhichimmediatelyreportsatitsinterfaceanyconditionthatisl

happens-before和as-if-serial语义

happens-beforehappens-before定义happens-before的概念最初由LeslieLamport在其一篇影响深远的论文(《Time,ClocksandtheOrderingofEventsinaDistributedSystem》)中提出,有兴趣的可以google一下。

锁优化

锁优化这里的锁优化主要是指JVM对synchronized的优化。偏向锁偏向锁的思想是偏向于让第一个获取锁对象的线程,这个线程在之后获取该锁就不再需要进行同步操作,甚至连CAS操作也不再需要。当锁对象第一次被线程获得的时候,进入偏向状态,标记为101。同时使用CAS操作将线程ID记录到MarkWor

锁的种类与一些机制

锁可重入锁重入锁ReentrantLock,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁。除此之外,该锁的还支持获取锁时的公平和非公平性选择。同时考虑如下场景:当一个线程调用Mutex的lock()方法获取锁之后,如果再次调用lock()方法,则该线程将会被自己所阻塞,原

创建线程的多种方式和守护线程

创建线程的多种方式和守护线程创建线程的多种方式继承Thread类创建线程同样也是需要实现run()方法,因为Thread类也实现了Runable接口。当调用start()方法启动一个线程时,虚拟机会将该线程放入就绪队列中等待被调度,当一个线程被调度时会执行该线程的run()方法。publicstat