
java多线程
文章平均质量分 90
flysharkym
这个作者很懒,什么都没留下…
展开
-
自旋锁、排队自旋锁、MCS锁、CLH锁
原文地址:自旋锁、排队自旋锁、MCS锁、CLH锁注:文中的代码忽略了lock和unlock不成对出现的异常情况。另外文中代码可以通过引入ThreadLocal类来去掉lock/unlock方法的参数。自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自转载 2015-04-01 16:46:29 · 1026 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocal经常被使用到,但是一直没有研究过它的实现原理。在看源码之前,我猜测它是这样设计的:ThreadLocal中包含一个Map<Thread,Map<ThreadLocal, V>>属性,在使用时,通过Thread.currentThread()获取到当前线程,从而根据Key,找到Map<ThreadLocal, V>,后来发现是错的。所以本文通过阅读JDK1.7源码,来解析ThreadLocal的设计思想和原理。原创 2015-03-28 19:53:13 · 1086 阅读 · 0 评论 -
ConcurrentLinkedQueue原码解析
ConcurrentLinkedQueue是一个基于单链表的无界线程安全队列,该队列是FIFO的。ConcurrentLinkedQueue/ConcurrentLinkedDeue和LinkedBlockingQueue/LinkedBlockingDeue相比,不同点在于它们不提供阻塞功能,并且是Lock-Free的,而后者则是利用ReentrantLock实现的。原创 2015-04-14 18:02:39 · 1360 阅读 · 0 评论 -
ConcurrentHashMap源码分析
ConcurrentHashMap是HashMap更高效的线程安全版本的实现。不同于Hashtable简单的将所有方法标记为synchronized,它将内部数组分成多个Segment,每个Segment又是一个特殊的hash表,这样设计是为了减少锁粒度。另外它内部通过精巧的实现,让很多读操作(get(),size()等)甚至不需要上锁。原创 2015-03-09 11:33:13 · 1220 阅读 · 0 评论 -
ReentrantReadWriteLock原理分析
ReentrantReadWriteLock顾名思义是可重入的读写锁,允许多个读线程获得ReadLock,但只允许一个写线程获得WriteLock。原理介绍1. ReentrantReadWriteLock类图:2. ReentrantRead原创 2015-04-09 16:13:09 · 4106 阅读 · 0 评论 -
ConcurrentSkipListMap原码解析
SkipList介绍1. SkipList(跳表),在理论上能够在O(log(n))时间内完成查找、插入、删除操作。SkipList是一种红黑树的替代方案,由于SkipList与红黑树相比无论从理论和实现都简单许多,所以得到了很好的推广。SkipList是基于一种统计学原理实现的,有可能出现最坏情况,即查找和更新操作都是O(n)时间复杂度,但从统计学角度分析这种概率极小。使用SkipL原创 2015-04-13 17:12:52 · 1499 阅读 · 0 评论 -
JUC AbstractQueuedSynchronizer原理解析
在J2SE 1.5的java.util.concurrent包(下称j.u.c包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer类(下称AQS类),这个简单的框架而构建的。这个框架为同步状态的原子性管理、线程的阻塞和解除阻塞以及排队提供了一种通用的机制。原创 2015-04-03 17:59:04 · 1178 阅读 · 0 评论 -
JVM锁机制volatile/synchronized/lock
1.深入JVM锁机制1-synchronizedhttp://blog.youkuaiyun.com/chen77716/article/details/66187792.深入JVM锁机制2-Lock转载 2014-09-09 16:51:30 · 1878 阅读 · 1 评论 -
sun.misc.Unsafe源代码
转自:源码剖析之sun.misc.Unsafe Unsafe类提供了硬件级别的原子操作,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。Java并发包(java.util.concurrent)中大量使用了CAS操作,涉及到并发的地方都调用了sun.misc.Unsafe类方法进行CAS操作。Unsafe类还提供了volat原创 2015-03-26 16:35:33 · 3210 阅读 · 0 评论 -
Java 理论与实践: 处理 InterruptedException
Java 理论与实践: 处理 InterruptedException注:这里仅转了文章开头部分内容,详细内容请查看原网页。这样的情景您也许并不陌生:您在编写一个测试程序,程序需要暂停一段时间,于是调用Thread.sleep()。但是编译器或 IDE 报错说没有处理检查到的InterruptedException。InterruptedException 是什么呢,为什么转载 2015-03-30 15:53:18 · 1019 阅读 · 0 评论 -
java-memory-model
本文是InfoQ上的《深入理解Java内存模型》 java-memory-model 系列文章汇总列表。同时列举了每篇文章的主要内容:深入理解Java内存模型(一)——基础http://www.infoq.com/cn/articles/java-memory-model-1--内容摘要:重排序从java源代码到最终实际执行的转载 2016-03-11 15:58:10 · 1317 阅读 · 0 评论