`

研磨Java源码--并发框架之锁机制

 
阅读更多

学习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程序源码-日本人编的程序 抛光研磨.rar

    了解和分析这段源码,工程师可以学习到如何设计和优化抛光研磨工艺的控制策略,包括如何处理不同材质的工件、如何调整工艺参数以提高效率和质量,以及如何实现安全保护机制。对于希望提升自动化水平的制造业来说,...

    研磨设计模式-配套源代码 UTF-8格式

    《研磨设计模式》是一本深入探讨软件设计原则与实践的经典书籍,其配套源代码提供了丰富的实例,帮助读者更好地理解和应用各种设计模式。这个UTF-8格式的压缩包包含了书中介绍的各种设计模式的实现,是学习和研究...

    欧母龙PLC程序源码-井研磨边机.zip

    理解并分析这份源码,不仅可以帮助我们深入理解井研磨边机的工作原理,还能为我们提供改进设备性能、提高效率的思路。同时,通过对欧母龙PLC的编程学习,工程师可以提升其在工业自动化领域的专业技能,更好地应对...

    研磨Struts2-高清-完整目录-2011年10月

    研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人

    研磨设计模式-配套源代码

    "研磨设计模式-配套源代码"很显然是一份与学习和理解设计模式相关的资源,其中包含了实际的编程示例。这份压缩包可能包括了多种常见设计模式的实现,如单例模式、工厂模式、观察者模式、装饰器模式等,通过源代码的...

    欧母龙PLC程序源码-日本人编的程序 抛光研磨.zip

    这个压缩包“欧母龙PLC程序源码-日本人编的程序 抛光研磨.zip”显然是包含了一个与抛光和研磨工艺相关的PLC控制程序。PLC是工厂自动化中的核心组件,负责接收来自传感器和其他设备的输入,处理这些信息,并控制执行...

    研磨设计模式--chjavach的博客文章

    研磨设计模式的过程是持续学习和实践的过程,chjavach的博客文章提供了深入探讨这些模式的宝贵资源,值得我们仔细阅读和学习。通过深入理解和运用这些设计模式,可以提升个人的编程技巧,同时也为团队合作和项目维护...

    欧母龙PLC程序源码-井研磨边机.rar

    在本压缩包中,源码可能是以梯形图的形式存在,这是最常用的编程方式,因其直观易懂,与继电器控制电路有类似之处,受到工程师们的喜爱。 井研磨边机的PLC程序可能包含以下几个关键部分: 1. 初始化程序:开机时...

    研磨设计模式源码

    《研磨设计模式源码》是一份非常宝贵的资源,它提供了设计模式的实践代码,帮助开发者深入理解并应用这些模式。设计模式是软件工程中经过长期实践总结出来的一套通用解决方案,它们描述了在特定场景下如何解决常见...

    研磨装卸设备-SOLIDWORKS零件图-机械工程图-机械三维3D设计图

    《研磨装卸设备-SOLIDWORKS零件图-机械工程图-机械三维3D设计图》 在机械工程领域,设计一款非标设备是一项复杂而精细的工作。本篇将围绕标题和描述中的“研磨装卸设备”展开,深入探讨其3D设计、结构特点以及涉及...

    研磨设计模式-配套源代码.7z

    《研磨设计模式》是一本深入探讨软件设计模式的书籍,其配套源代码包含了许多经典设计模式的实际应用示例。这些源代码可以帮助读者更直观地理解设计模式的原理和使用方法,进一步提升软件开发能力。 设计模式是软件...

    研磨设计模式-陈臣pdf

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    飞翔的小鸟java源码-City-Builder-Architects-Production:城市建设者-建筑师-生产

    飞翔的小鸟java源码城市建设者-建筑师-生产 城市垄断 应用商店说明 “扩大你的领域,建立联盟,并探索有史以来最深入的闲置 RPG 游戏之一!” 从领域研磨机 也用这种语言,“探索有史以来最深的城市建设者之一!” ...

    三菱PLC程序源码-磨床.zip

    磨床则是金属加工中的一种设备,用于对工件表面进行研磨和抛光。 【描述解析】 "三菱PLC程序源码-磨床"的描述简单明了,强调了这个源码是针对磨床设备的。这通常意味着程序设计者或工程师已经编写了控制磨床操作的...

    研磨设计模式-陈臣.epub

    “1.1 设计模式是什么 1.1.1 什么是模式 从字面上理解,模,就是模型、模板的意思;式,就是方式、方法的意思。综合起来,所谓模式就是:可以作为模型或模板的方式或方法。... “研磨设计模式”。 iBooks.

    松下PLC程序源码-自动磨刀机.zip

    【标题】"松下PLC程序源码-自动磨刀机.zip" 提供的是与松下(Panasonic)可编程逻辑控制器(PLC)相关的程序源代码,用于控制自动磨刀机的运行。PLC是一种专门用于工业环境的数字运算操作电子系统,它通过逻辑控制...

    研磨设计模式-陈臣.mobi kindle版

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

    时效时间对表面机械研磨处理Cu-4.5Ti合金组织和硬度的影响.docx

    【时效时间对表面机械研磨处理Cu-4.5Ti合金组织和硬度的影响】 铜钛合金,特别是Cu-4.5Ti合金,由于其在高温环境下的高强度和良好的应力松弛性能,成为铜铍合金的理想替代品。为了进一步提升这类合金的性能和使用...

    西门子PLC程序源码-s7-200生料磨收尘器.zip

    8. **故障诊断与安全**:PLC程序通常包含错误检测和处理机制,当系统出现异常时,能够及时报警并采取相应措施。此外,安全相关的编程也是非常关键的,确保在设备故障时能安全停机,避免设备损坏或人员受伤。 9. **...

    研磨设计模式-part2

    《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...

Global site tag (gtag.js) - Google Analytics