学习Java集合框架需要一些算法基础,而并发框架则需要一些操作系统的基础了。为了学习这部分,博主还专门翻阅了大学操作系统课本,可见基础总是有用啊。
Java并发框架的锁机制是并发框架的重要功能之一。虽然synchronized已经能够完成大多数情况下的互斥操作,但是对于一些希望显式的声明锁并且可以随时中断的地方,仍然会要用到显式锁。synchronized块本质上也是一个对象的内部锁,自从JDK1.6优化以来,synchronized块性能已经跟显式锁相差无几。
本文章所有类均位于java.util.concurrent.locks包中。本文中的Java并发框架主要是指由JDK1.5引进的jsr166,作者Doug Lea(集合框架的作者之一)。
Lock
Lock接口定义了锁的基本行为,lock() tryLock() unlock()等。lockInterruptibly()表示中断时,会释放锁。newCondition()则会返回一个Condition类。
Condition
Monitor(译为管程)和condition variable(条件变量)是操作系统中实现多线程互斥的一种方式,参考维基百科。monitor的核心是wait、singal两条原语。wait等待条件变量就绪,singal则通知条件变量就绪。Java最早的monitor实现是Object对象的wait()和notify()方法。
Condition是monitor的条件变量的另一种方式。这个接口包含await() 和signal()两类方法。它会与Lock配合使用。
ReentrantLock
reentrant的意思是“可重入的”,是指在线程在试图获得它占有的锁时,请求会成功。ReentrantLock通过抽象内部类Sync实现线程等待队列。Sync有两个实现:FairSync(公平队列)和NonfairSync(非公平队列)。FairSync保证严格的FIFO顺序,但是吞吐量会较小。它们都继承了AbstractQueuedSynchronizer框架。AbstractQueuedSynchronizer大量使用了Unsafe的Compare-and-swap原子操作,CAS原语分析具体可参考源码剖析之sun.misc.Unsafe。 AbstractQueuedSynchronizer主要是记录等待链表和锁状态,具体实现比较繁杂,这里不一一分析了。
相比集合框架,并发框架与底层结合更紧密,用到了大量原子操作,代码也比较难读,看了半天源码发现,还是看资料比较好理解。developerWorks上有一个Java并发专题,或者书籍《Java Concurrency in Practice》(Joshua Bloch ( Effective Java 作者)和Doug Lea合著)讲的比较全面。这次先分析这些吧。
分享到:
相关推荐
研磨设计模式-配套源代码研磨设计模式-配套源代码
欧母龙PLC程序源码-井研磨边机.zip
研磨设计模式第二版-配套源代码 UTF-8格式 研磨设计模式第二版-配套源代码 UTF-8格式
研磨设计模式-配套源代码.rar
欧母龙PLC程序源码-日本人编的程序 抛光研磨
研磨设计模式-配套源代码.7z
欧母龙PLC程序源码-日本人编的程序 抛光研磨.zip
欧母龙PLC程序源码-井研磨边机
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
研磨设计模式的配套源码,请下载,不要想了,解压后,直接放到eclipse下面即可运行!
单例模式、工厂方法模式、策略模式、命令模式和桥接模式。
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
飞翔的小鸟java源码城市建设者-建筑师-生产 城市垄断 应用商店说明 “扩大你的领域,建立联盟,并探索有史以来最深入的闲置 RPG 游戏之一!” 从领域研磨机 也用这种语言,“探索有史以来最深的城市建设者之一!” ...
时效时间对表面机械研磨处理Cu-4.5Ti合金组织和硬度的影响.docx
“1.1 设计模式是什么 1.1.1 什么是模式 从字面上理解,模,就是模型、模板的意思;式,就是方式、方法的意思。综合起来,所谓模式就是:可以作为模型或模板的方式或方法。... “研磨设计模式”。 iBooks.
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...