



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java集合框架的线程安全周庆岳Java集合框架是由Java平台标准版1.2(JavaSE1.2)引入的通用数据结构与算法框架。其灵活的面对对象设计受到了广大Java程序员的一致青睐,为Java平台的成熟奠定了坚实的基础。一个集合(也称容器)是指将一组元素组合成一个单元的简单对象。集合用于存储、取回、操作和传递这些聚合的元素。集合框架是指一个统一的用来表示和操作集合的体系结构[Bloch,1999]。最简单的集合如数组、列表和队列等,集合框架最著名的例子如C++标准库(STL)。线程安全不是一个全有或全无的问题,难以对其进行精确的定义。线程安全笼统地讲是指程序在多线程环境下运行时的正确性。Java集合框架的设计者BlochJoshua在他著名的《Java高效编程》一书中对Java线程安全的等级做出了相对精确的定义[Bloch,2001]:非可变、线程安全、条件线程安全、线程兼容和线程不友好。本文将结合上述Bloch关于线程安全等级的定义,对Java集合框架中的集合类进行线程安全性分析,并指出各个集合类在现实的编程环境中需要注意的并发编程的陷阱;同时对集合框架中通用算法对线程安全性的影响进行分析。所涉及的集合类不仅包括JavaSE1.2引入的集合类,还包括旧集合类(JavaSE1.2前引入)和新集合类(JavaSE5引入)。从而帮助Java程序员在进行并发编程时更加高效地利用Java集合框架。Java线程安全的等级定义根据Bloch的定义,将线程安全分为五个等级,下面将给出这五个等级的描述和部分示例。1、非可变如果一个类的所有实例对于调用它们的客户端对象总是恒定不变的,而无需外部同步,则称为非可变的。字符串类和整数类都是非可变的,但在集合框架中并没有提供直接的非可变类,而是通过对可变类进行封装而得到非可变类。非可变集合不可修改,因而它可以在各个线程间安全共享而无需额外的同步。作为一个好的实践准则,一旦生成非可变类之后,不要再持有被其封装的集合类的引用,这样才可以完全保证其非可变性。2、线程安全类的实例是可变的,但它的所有方法已经通过使用足够的内部同步使其实例可以被并发的使用而无需外部同步。并发的调用将会以某种全局一致的方式连续地执行。随机类和定时器类都是线程安全类。集合框架中线程安全的类并发哈希映射类在JavaSE5中被引入,它并不包含在原来的集合框架中,但它实现了集合框架Map接口。并发哈希映射类实现了并发和效率之间的高效平衡,已被作为哈希表类和同步映射表封装在并发环境下的高效替代品。3、条件线程安全除了某些方法需要在没有其它线程的干扰的情况下顺次执行之外,条件线程安全类和线程安全类类似。为了消除线程干扰的可能性,客户端对象在调用这类方法的过程中需要获得该集合类对象的锁来进行同步。一些旧集合类如Vector和Hashtable都是条件线程安全类,对这些集合类进行遍历操作时需要对其进行外部同步。4、线程兼容肠对其高对象岗实例饭的所皱有方扑法调至用都串通过妹外部补同步世之后廉再进遥行,刺线程墓兼容流类可塌以安抹全的货并发台使用鬼。荐集合州框架叉中的蛇通用技目的烂集合秆的标筒准实图现,回如数谁组链圾表类衡和慕哈希添映射厘表类穴等都夹是线妈程兼警容的屑类。本对线挪程安唯全的肃集合嘴类进佩行遍叉历操顶作,吐需要胆先获避得一材个对乳它的属条件辞线程暗类封充装,过然后其再通汪过外升部同槽步来却进行挥遍历征。绒5、乒线程卫不友斤好描线程浴不友勉好类脉无法债在多恭线程爪环境赞下安翁全地俯并发位使用菌,即铲使对维其所强有的烛方法盆调用葡都进明行外青部同必步。泄Ja鲜va至语言泽中只东有很鞭少几朽个类究的方知法是罩线程惹敌对商的,踏已经诉被声作明为杏不赞震成使钩用。反Ja钱va留集合投框架卷抽象业接口按及其罚实现侄的线馒程安全全柿Ja泽va只集合责框架望包括伸三个饶部分今[B里lo活ch怜,档19挣99患]羽:接窗口、缠实现症和算疯法。拔接口绳是抽蛇象数却据类蓬型的筹表示蝇集合团,接连口使算得集刊合的障操作迫和集羽合的扔具体燥实现市细节孝相独央立。目在面突对对拴象的埋语言办里,灾这些避接口贪一般察形成悉一个饮层次胶结构粱。梁实现伍是指补表示稼这些自集合鞭接口劈的具及体实肢现,宜实质抢上是查可重毅用的境数据县结构性,即睁通用负集合锈类。鞋算法茎是指形可以蛇对实酬现集倍合接援口的春类进饺行一稿些实扒用计泰算的蝇方法隐,比舌如排岔序和暮查找绢。这看些算伏法可渐以说饥是多旧态的勤,同铺一个彼方法殿可以康用于场实现剩了适肯当接功口的巩不同侮实现飞类。耽这些内算法眯实质愉上是除可重冈用的锤功能邮。尾Ja拜va恶集合估框架私的接属口层好次冈和通软用实用现如蝴下:屈图1搭裂Ja价va书集合跪框架死的接团口层谈次预接口龙通用哀实现异集合盐哈希盛集合历、树跃集合携和链闲接哈缺希集袜合句列表客数组泼链表显和链罚接链塌表测队列浩优先弓级队皂列终映射虽表刷哈希誓映射愿表、籍树映酱射表筋和链苹接哈痛希映桂射表勒表1初J昏av三a接垒口的捡通用何实现璃下面政按接酸口晨分类垒对集粮合类君进行物线程宋安全越分析灭。分刺析的信对象慈主要承包括犁表1剖中的至通用刊实现惠类,刚还包淹括一烟些特乐殊用饺途的灿实现箭类。洲1、采集合萌接口哭集合岔是不毯包含躁重复悲元素前的抽炊象集要合。温实现戒该接冰口的剩集合领类包正括三狐个通僚用实处现类杏哈希咳集合杨类、蛋树集类合类刺和链灭接哈疮希集颗合类等,两齿个特颤殊用稳途实递现类变枚举扒集合醒类和评写复竹制数谨组集瓶合类软。删三个娘通用砍实现也类和这枚举凭集合剑类都港是荐线程通兼容哑类,告对这总些集带合类讯的并范发访航问都付需要避进行拴外部姥同步痒。特台别是喉遍历靠操作苏,需蜘要先左通过近调用施Co过ll汪ec撤ti派on仔s.政sy赤nc私hr邮on苍iz绿ed邀Se祝t(对)方六法返吸回一豪个条受件线务程安谦全的米同步座集合由类封播装,版然后贩再对矛其进域行同卵步遍首历。终特殊厉实现胡类写稀复制菠数组上集合资类是范线程稠安全胶类,休可以园安全押地并刷发访筑问,露只是吹其写宇操作辆开销栏较大犬,一恭般用窄在较食少修遇改的霸环境愉。蔬2、垦链表班接口爱链表交是有递序的吧抽象协集合祥,可捡以允丑许重歇复元略素存虏在。垒还允誓许对吨其进惨行基撇于位歪置的团访问翅。实文现该藏接口妖的集湖合类狼包括雨两个莫通用肿实现老类数过组链江表和泡链接座链表能,一扭个特打殊用装途实臂现类叮写复宿制数躺组链真表类污,还挑包括笨旧的要集合政类矢杰量类嫩。绣通用海实现燃类数仪组链甚表和偿链接祝链表可是线纹程兼雪容类判,如母果未纸先进奥行同灭步而叶并发俱使用贿,会侄抛出炸并发好修改邪异常锦。遍阔历方冬法同蛋集合架接口就(S话et爬)专的通奏用实董现类哥似。咸特殊严实现隔类写千复制纱数组溉链表这类是顷线程功安全抵类,岂并发宵特性言与写锐复制头数组赶集合狼类类养似,良实际今上写蒜复制鹿数组然集合差类就柿是基舌于写萌复制蜘数组选链表田类的老一个丢集合卵实现郊。均3、我队列帽接口岭队列辞被设齿计成唱保存优元素局功能亩优先由于处巡理元纷素功饭能的胜抽象拴集合音。队授列接贡口在站Ja捷va础S捧E奏5中垦被引贪入J波av落a集存合框牲架,某优先兔队列才是动其通球用实醉现类澡,链甩表通什用实龙现之雅一也斗被重岛写实桌现了桑队列茧接口强。此搏外,部还有早数组弓阻塞遗队列寸、秧并发吉链接雹队列退、延波时队柱列、锹链接孤阻塞信队列批、优换先级歇阻塞绩队列悟和同乒步队机列六刚个特速殊实洲现类咳。榨除了呈并发滩链接威队列赵是线想程安久全类阁之外叔,其租他实特现都干是线安程兼毙容类驾。勤4、屿映射使表堆接口辉映射贝表是直用于次键附—筑值映讽射的惑抽象刚集合腾,不雄允许逆存在香重复骄的键惑,每倚个键鸣至多窝允许际映射编到一渣个值羞。映驼射表籍包括茎两个唤通用屯实现描类哈闹希映只射表上和树米映射俗表,办还包本括并蹄发哈安希映创射表鸡和弱遇引用锐哈希炕映射挑表等津特殊捐实现国类。摸哈希废映射读表和丢树映灵射表抢是线钥程兼秘容类膏。并边发哈享希映薪射表顽类是狭线程忙安全埋的,剩而且残由于秋其优嘱秀的起算法蛙设计头,使捡其再夫保证告线程母安全菌的同冶时还渣提供豆了高袋度的稼并发斧性。钉弱引净用哈晋希映坡射表衣类一牵般作拨为高扒速缓斥存使丽用,间它内蒙部使静用弱本引用动作为撑键,啦它的墙行为碗依赖影于具源体的买Ja课va滔虚拟扣机的拘垃圾糟收集筋器,冶即使隙对其绪进行刮外部愧同步押也不李能保贡证其齿一致厨性,走因而剑弱引还用哈挡希映甩射表柜类是前线程圆不友桃好的像集合草类。棚5、树封装满实现于除了聪上述邻提及押的集晴合接光口的差通用钞和特抄殊实谋现之差外,另Ja衡va泥集合伙框架乐还提炎供了甲几类陈封装病实现闲。窃其中腿包括课同步拿封装哪类伶和满非可高变赶封装昼类塞。的同步伟封装上方法田如竿:勒Co母ll凭ec吗ti味on喷s.所sy爽nc响hr钥on们iz忌ed冰Co足ll跨ec就ti父on差(她Co栽ll浸ec的ti烤on朵c咳)婚返回冻一个镰集合报c勒的原弦子同并步封唱装,补即它棚的所目有方聚法都村已被迅同步亩,上是艳一个屑条件杂线程握安全车类。兄在对细同步血封装尘类骗访问验需要啄先获朗得该时对象孟的同肝步锁锡,之欲后便冬可实黄现并屿发访顶问。挨Ja狂va兵集合糕框架估提供爷的软同步控封装烂类可遇以提枝升通开用实呼现类般的线受程安亡全等贸级。勤一般颜的通尘用实诱现只坐有线梳程兼赴容等萝级,娃在需暴要较驾高安晌全等维级的鞭情况租下,太如并锹发遍译历,怒就需厨要利突用同翠步封净装类忍。母非可好变封召装方压法如逼:任Co钉ll阀ec瞒ti撑on效s.字un颜mo香di塞fi泽ab光le随Co群ll务ec咳ti槽on旨(望Co米ll冠ec捧ti丝on爱c明)烟返回烘一个拼集合是c的巴只读剖视图县,拦是一竹个非朵可变榜类。棍Ja抱va盛集合隐框架托通用分算法韵对线秆程安除全的卡要求甚Ja依va膀集合禽框架导的算猾法功逐能不补是虑作为寨各个童集合维的功竿能函纷数,驻而是仆独立窝出来啄作为隙对某桐一类亡实现爱合适疮接口概的汉类进炒行通伞用操骄作,蝇从而血实现良算法摆功能概的多缎态性鸦。止通用坏的算袄法包围括排系序嘉、混匠淆、贵搜索蕉和查削找极快限值拆等。打点排序继和混搁淆糟是一趟对相蹄反的匠操作讨,两牢者都收要对刚集合日进行阿写操概作,伞要保阳证算肝法在点并发缓环境涉下执靠行的抖正确完性,卫要求枕写操震作要坏在线头程安耽全集放合类故上件执行敲。汉对于得只具签有线纠程兼泛容等拢级的刊集合量类,慌要先抄利用铜同步挣封装泳类将愁其线汇程安托全等童级提的升到复条件启线程煌安全爷;对军于具耗有条腰件线状程安身全的手集合疑类,凳则需食进行璃外部桌同步拾。兴通过潜以上穷步骤木,被料操作僻集合当就具昼有线过程安怖全等携级了嫌,可债以保折证算听法被中正确施执行殿。岭另一弹种方依法是灾对萌被操亦作尖集合辣类进辛行保麦护性态拷贝糊,翁则总盏能保肾证算厅法的立正确尚性,传这种肯方法闲代价蓝较高凤,岛但能厘提高锤并发兽性。欺得另一躺类算例法搜薄索和肉查找播极限牢值姐比较移类似培,都新只需宿进行秤读操县作。到除了口利用医排序潮和混眨淆用让的两秃种方亿法外煤,由蜓于是蒜只读移操作愿,女还可登以利扯用非劣可变跟封装镰先获肃得集始合的术一个馒视图腿,然飞后在听该视衡图上仆实现而查找熟。结论访Ja输va课集合炉框架握采用勉接口堡和实说现相穴分离煌的面告对对太象设办计方滤法,腰给J科av驴a徒平台刷带来铁了一骗个灵开活高茫效的饥数据稠结构姑和算美法工电具箱申。烛线程驳安全脱特性怨在聚Ja壤va威集合迅框架刺中属英于实库现细腹节,柿因而探集合烦框架多的闹接口头协议从中并诵未提案供相仇应的精线程估安全妖性保终证字。苹但是想线程淘安全讨是J确av蛇a程巾序正敞确运祝行参基本姓前提伪之一撕,因封此乓本文具在保绕证程捷序正聚确性间的前技提条棵件下躺,胳对J活av纽a集暂合框禾架的赵集合摊类进乓行安察全等帅级分蜜类滤,虏并对梳各种腿算法黎操作铺的所清要求漠的线终程等轨级牙进行病了分固析述。惨从哪而帮敞助宗程序邮员利独用J压av杠a集抄合框赴架魔编写惜正确饶高效悼
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024花艺师考试的创新设计理念与实践应用的结合分析试题及答案
- 2024年农艺师考试的改变与调整试题及答案
- 四年级信息技术上册 第8课 制作特色贺卡教学设计1 粤教版
- 福建事业单位考试乡镇治理措施题及答案
- 水库建设全新规划方案
- 五年级上信息技术教学设计-学习输入汉字-吉教版
- 抗病虫害技术的试题及答案
- 公司入干股合同样本
- 福建事业单位考试全景扫描与试题及答案
- 深入了解花艺行业技能发展的试题及答案
- 2025年江苏苏北四市高三一模高考地理试卷试题(含答案详解)
- 安防监控智慧安防监控系统设计与实施方案
- 《石油化工金属管道工程施工质量验收规范2023版》
- 智能制造能力成熟度模型(-CMMM-)介绍及评估方法分享
- 2024年度餐厅与旅行社旅游服务定制化合同3篇
- 品管圈PDCA参赛案例-提高护士对急救药品知识的知晓率医院品质管理成果汇报
- 工贸行业隐患排查指导手册
- 肠梗阻业务学习
- 电梯故障代码表
- 地方导游基础知识电子教案 专题七 学习情境三 宁夏回族自治区课时教案
- 中国吉兰-巴雷综合征诊治指南2024解读
评论
0/150
提交评论