ConcurrentLinkedQueue原码解析

ConcurrentLinkedQueue是一个基于单链表的无界线程安全队列,该队列是FIFO的。ConcurrentLinkedQueue/ConcurrentLinkedDeue和LinkedBlockingQueue/LinkedBlockingDeue 相比,不同点在于它们不提供阻塞功能...

2015-04-14 18:02:39

阅读数 860

评论数 0

ConcurrentSkipListMap原码解析

SkipList介绍 1. SkipList(跳表),在理论上能够在O(log(n))时间内完成查找、插入、删除操作。SkipList是一种红黑树的替代方案,由于SkipList与红黑树相比无论从理论和实现都简单许多,所以得到了很好的推广。SkipList是基于一种统计学原理实现的,有可能出现...

2015-04-13 17:12:52

阅读数 961

评论数 0

ReentrantReadWriteLock原理分析

ReentrantReadWriteLock顾名思义是可重入的读写锁,允许多个读线程获得ReadLock,但只允许一个写线程获得WriteLock。 原理介绍 1. ReentrantReadWriteLock类图: 2. ReentrantRead

2015-04-09 16:13:09

阅读数 2927

评论数 0

JUC AbstractQueuedSynchronizer原理解析

在J2SE 1.5的java.util.concurrent包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer类(下称AQS类),这个简单的框架而构建的。这个框架为同步状态的原子性管理、线程的阻塞和解除阻塞以及排队提供了一种通用...

2015-04-03 17:59:04

阅读数 631

评论数 0

自旋锁、排队自旋锁、MCS锁、CLH锁

原文地址:自旋锁、排队自旋锁、MCS锁、CLH锁 注:文中的代码忽略了lock和unlock不成对出现的异常情况。另外文中代码可以通过引入ThreadLocal类来去掉lock/unlock方法的参数。 自旋锁(Spin lock) 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被...

2015-04-01 16:46:29

阅读数 549

评论数 0

Spring依赖注入DI

1. Spring是什么? —Spring是一个开源框架,是于2003年兴起的一个轻量级Java开发框架。它是为了解决企业应用开发的复杂性而创建的。 — 说它是轻量级的是因为从jar包大小与开销两方面而言Spring都是轻量的。 Spring框架目的:解决企业应用开发的复杂性Spring框架应用...

2015-04-01 14:17:48

阅读数 719

评论数 0

HashMap源码分析

转自:HashMap源码分析   需要提到的是,HashMap内部的容量设计为2的幂,是为了方便扩容和取余运算,都只需要采用二进制位运算即可 1.扩容:newCapacity 2.取余:当Length=2^n时,hash%Length=hash&(Length-1) 学过数论...

2015-04-01 11:30:03

阅读数 493

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭