第章 并发编程及线程池_第1页
第章 并发编程及线程池_第2页
第章 并发编程及线程池_第3页
第章 并发编程及线程池_第4页
第章 并发编程及线程池_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java并发编程技术欧阳宏基本章内容1.线程池的概念与工作原理2.Executor并发编程框架以及线程池执行策略3.Future与Callable4.线程锁5.利用Condition实现线程间通信6.阻塞队列3线程池的概念与工作原理为什么使用线程池:假设在一台服务器完成一项任务的时间为T

T1创建线程的时间

T2在线程中执行任务的时间,包括线程间同步所需时间

T3线程销毁的时间那么T=T1+T2+T3。

T1,T3是多线程本身的带来的开销,希望减少T1,T3所用的时间,从而减少T的时间。如果在程序中频繁的创建或销毁线程,这导致T1和T3在T中占有相当比例。显然这是突出了线程的弱点(T1,T3),而不是优点(并发性)。线程池技术正是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的。它把T1,T3分别安排在服务器程序的启动和结束的时间段或者一些空闲的时间段,这样在服务器程序处理客户请求时,不会有T1,T3的开销了。

4线程池的概念与组成部分线程池:一种管理一定数量线程的手段,线程池中的线程数量是由运行时机器容量、负载的配置信息以及动态信息决定。应用程序在启动时创建一定数量的线程放入线程池,线程池通过将需要并发运行的任务放入到任务队列中等待空闲线程来处理。组成部分:

(1)线程池管理器(ThreadPoolManager):用于创建并管理线程池(2)

工作线程(WorkThread):线程池中线程(3)任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。(4)任务队列:用于存放没有处理的任务。提供一种缓冲机制。5线程池的工作原理创建线程池要设计一个线程池至少要考虑以下几个方面:①对任务进行描述的类,包含线程池中线程执行的所有信息。②可动态变化的、保存任务的队列。③线程池管理器,用来创建、销毁线程池,提供对任务的调用与转发。④处理任务的工作线程类。⑤查询线程,用来检测任务的完成情况。⑥拒绝策略。

自定义线程池还是具有相当大难度的JDK自带的线程池核心线程池对象-ThreadPoolExecutorThreadPoolExecutor是线程池体系中的核心类,用来创建和维护线程池对象。主要属性如下:corePoolSize:核心线程数量(包括空闲线程)maximumPoolsize:线程池中能创建的最大线程数keepAliveTime:当线程数大于核心数时,空闲线程被销毁前等待任务的最长时间unitkeepAliveTime:参数的时间单位workQueue:保存任务的队列,任务实现Runnable接口,由Execute方法调用执行threadFactory:创建线程对象所使用的工厂。handler:由于超出线程范围和队列容量而使执行任务被阻塞时采用的处理程序

见源文件:ThreadPoolExecutorTest.java线程池的执行策略执行策略是一种资源管理方式,通过限制并发的数量来确保应用程序不会由于资源耗尽而失败。执行策略主要从执行任务的线程、任务的执行顺序、任务并发执行的个数、任务队列中等待执行的个数、对哪个任务进行拒绝并如何通知应用程序等方面来定义任务的执行,从而确保应用程序具有较好的性能。线程学池的腹执行爆策略Ex将ec垄ut遮or晚s通过过工厂鼻方法斧提供污了四灾种执竟行策拐略来假管理咸工作册线程丽,分话别是节:①ne然wS喜in户gl吹eT票hr忧ea稳dE氧xe病cu垦to根r:确淡保所姜有任疮务按津照提亩交的弃先后盲顺序雾由唯粮一工犯作线阶程来矛执行配。②ne坐wF悄ix进ed置Th沙re茫ad做Po鞋ol:线抱程数舍量是惊固定孕的,叼随着种任务思的提炼交而吸一一却创建津,直适到数将量达克到最斗大值么。③ne云wC虏ac治he度dT贪hr孝ea常dP吉oo仍l:一揉个可盈缓存图的线劲程池凑,线品程池扭大小触完全猜依赖总于操膊作系除统(萌或者JV隐M)能薯够创效建的储最大王线程丢数,乒并且哑能根踏据当婚前任晓务的添数量昏来调海整线巾程池谅中线琴程的秀个数径,适椒合于执行锁生存喝周期除较短弟的异称步任们务。见源企文件边:Th田re胖ad策Po卧ol耀Te竹st潮.j孙av团a④ne塌wS震ch抖ed蜓ul顶ed请Th损re扑ad诞Po碗ol:创听建一抛个大繁小无帐限的除线程嗽池。裙此线朽程池支持役定时碑以及运周期的性执僵行任泼务的需感求。见源脏文件首:Sc剑he捧du植le约dT句hr隶ea护dP梢oo龙lT胡es租t.盗ja些vaCa软ll疯ab坡le序&F舟ut断ur患e采用陈实现Ru斜nn俩ab腾le接口粥的线库程无艇法取绸得返蚁回值板。Ca拣ll胖ab馅le是接棚口,折其中录包含还一个ca忘ll方法信,该待方法督具有洁返回博值。实短现Ca泄ll仔ab喂le接口般的类康能够闷当做欧多线遥程中战的任居务类增。Fu脸tu幅re类可腰以拿菊到Ca架ll鞭ab牧le的返吉回值当,Fu感tu疫re的类迹型应酱该与Ca蒸ll金ab害le返回滥值类危型一厚致。见源滩文件城:ca臭ll础ab往le般/C跑al桥la尊bl肢eA恳nd渔Fu菌tu轰re终Te旱st侮.j始av悠a某些核情况肢下,昂需要眨执行好一组愧任务那,哪蔬个任谜务先怜完成灭,就渗先取卖哪个皂任务膛的值帮。这诉种情榴况下曾可以体使用Co璃mp灿le线ti惧on默Se掘rv冲ic顷e。Co孤mp鹿le唉ti附on蒙Se苹rv迫ic稻e将生万产新累的异捕步任喜务与赏使用赏已完叠成任鹅务的侨结果孤分离悉开来陪的服窝务。生产捞者su去bm浑it执行统的任日务。剪使用露者ta践ke已完薯成的贸任务,并尚按照穿完成怒这些鸣任务厅的顺驻序处点理它笔们的杰结果挂。见源垒文件雨:ca袭ll心ab孝le文/C屯om棕pl愚et升io免nS疏er糕vi协ce难Te终st毯.j遵av屿a线程液锁传统霞实现施线程斤同步造的方个法:(1趴)外s忍yn州ch孔ro肺ni恐ze检d代码副段(2乳)骄s待yn只ch钱ro吃ni锻ze他d方法JD铅K1劝.5之后就提供熄了线酸程锁极技术至来实隔现同他步线程巷锁的帝特点象:比传栋统线优程技梅术中喊的sy巧nc林hr帽on好iz老ed关键怜字更略加面疗向对陆象,滔在实辞现互勉斥(同步)的代卫码中泪,必绒须要毙获得份相应璃的锁架对象攀。上锁讯操作箭的相耐关代写码出汽现在乞资源湿所在克类的仰方法占中,形而不炸是线均程代激码中汉。见源祥文件辞:lo移ck音/L肿oc滤kT绘es倡t.划ja帝va见源繁文件纪:lo谦ck啦/B奋on胁us责Te绘st助.j初av色a线程黄锁锁的菜分类广:(1叫)读锁(2来)写锁接口Re测ad隶Wr辜it镜eL择oc绞k维护掩了一决对相味关的要锁,酱一个域用于切只读第操作捏,另抢一个器用于崖写入额操作振。如截果只洪进行玩读操眼作,洋那么观多个巴线程兔可以赴对同墨一个侮共享梅资源胡加多约次读羽锁。写入犹锁是归独占蓬的,用在莫对共责享资编源进龙行修呜改的饼情况被下。寺多个家线程吃要同婶时进她行修武改操条作,吓一次政只能怨有一裳个线兽程加到写锁药。在贝进行赶写操捐作时陈,不用能加禽读锁快。见源防文件奥:lo江ck拢/R绢ea墨dW孙ri剖te折Lo奋ck缺Te柱st先.j耍av虑a基于堪线程械锁的爪缓存东机制缓存薄是内狮存中霉的一近块特毁殊区织域,厉用于反存放咏应用反系统乱中经滴常会咐用到重的数炭据,饿用以意减少裁数据趴库的舰查询召操作柜以提创高应膀用系永统性换能。牛缓存绒机制眉普遍尖存在循于计蜘算机要应用先中,接例如Hi田be奏rn呼at吐e框架拐的Se要ss恰io掩n,存堆在两虹级缓裹存机惯制。见源邀文件乐:缓圆存/C窃ac寇he喜Te培st窝.j辈av性a利用Co聪nd常it鼓io易n实现榴线程谁间通良信线程变间通任信都抱是基斗于生狐产生住和消疑费者恢模型色的。传统抓的线爷程间沟通信制方式株:在进线程诉同步引的基凤础上输,不扎同的风线程闸对同霜一个压对象刑加锁批并执铲行wa卧it催()和no届fi神fy生()方法着。见源切文件执:co释nd蜓it盏io鄙n/恭Tr敏ad铅it喂io皆nT吹es讯t.昌ja钥vaCo参nd销it践io愁n的功涌能类侄似于垄传统Ob访je段ct乱.w副ai蛾t(话)和Ob朵je梯ct馆.n里ot超if起y(杯)方法火,Co趟nd维it制io弓n对象臂由Lo躬ck对象头的ne息wC捏on焰di刊ti碧on氧()对象遮创建互。通龙过执扬行si芳gn帽al煎()和aw新ai偏t(燥)方法哑在线涨程间放通信皂。见源敞文件放:co杏nd够it些io傻n/山Co板nd场it袜io坏nT咱es授t.周ja膜vaCo关nd碌it摆io束n对象恋的一圾个优解势在钻于能够厕方便区实现妨多个列线程只间(线程血个数吸大于2个)的通俊信。见源悟文件遍:co惯nd问it演io点n/挨Th弦re歌eC满on武di犬ti勉on添Te护st戚.j役av播a利用Se挂ma吓ph念or敞e控制侄线程杂并发谊个数Se喂ma派ph碍or怪e在提膨供线悉程同夜步的配基础肚上,督用来控制仓线程粘并发摧的个虎数。(1屿)例如泰有5个座偶位,10个人精要来兴坐,起一次逐同时勾能容伶纳5个人叼坐,暮只能清等到腾有人捷离开绪后,嫁其余般人才羡能坐绝。坐岗这个颈座位抬要获控得许奶可权荒,这巷个许蒜可权愉就是Se框ma旱ph激or削e。(2洲)剩余弃的5个人司随机椒获得诵许可游权,饼或者正按照Se驶ma家ph放or催e设定鲜的顺狼序来悠获得粗许可略权。见源超文件锐:Se酬ma本ph逝or宾e/天Se莲ma担ph肌or笛eT界es谨t.光ja册vaCy够cl好ic也Ba供rr抢ie蓝r同步警工具一个叮同步呼辅助医类,摄它允判许一逐组线叹程互限相等侵待,搬直到羞到达遗某个而公共馒屏障贝点(c桌om栽mo没n鱼ba叠rr桌ie杯r直po夸in非t)。公垒共屏珍障点莲可以喇在线贺程运卡行过乏程中访设置蛋多次持。屏障1屏障2例如韵:大购家约乞好7点在决学校誉门口梦集合(屏障),然端后一宗起出火发去芹公园清,到诉公园蠢后自猾由活届动,哭下午5点在蛋公园养门口睛集合(屏障)返回签。见源虹文件:C泉yc吨li班cB史ar拜ri音er游/Cy骑cl恩ic僚Ba屑rr址ie勇rT拳es昨t.厨ja旧vaCo陕un沃tD补ow列nL藏at喉ch同步宝工具倒计却时计拾数器煤,调秩用该忘对象络的co寨un啄tD恐ow抹n(彻)方法赴将技询术值枪减1,等到减棉到0为止脆,所厨有等塞待该台计数监器的屯线程滑开始灶运行。应用棍场景扮:在比魄赛中划,所作有运热动员调等到楼裁判挎鸣哨案,然惨后比芬赛开胶始,沙裁判您等到钱所有去运动仍员到效终点存后,村比赛率结束滤。见源舰文件捆:Co堪un对tD明ow滚nL蜻at路ch农/C苍ou吊nt届Do喂wn碑La苗tc闻hT盛es弄t.妥ja斗vaCo秆un补tD乌ow错nL拿at可ch同步料工具模拟钟抢红辅包程捷序中诞存在破一个亿缺陷抄:最先独启动茶的线封程抢姑到红征包的概率域是很葱大的,那慨么如返何该协让所牧有的岗线程脂都具皂备抢神到红奋包的担概率旬呢?解决傅思路派:让所虚有线更程都祝启动在后等滑待一尸个计总数器奸,当免这个渐计数腐器减论为0时,嘉再这甚些线携程来吊执行截抢红锣包的所逻辑定,这耍样的镜话所饶有线烫程的映机会杜都是宜相等屿的。见源眠文件末:Co眠un衣tD尚ow讯nL宝at族ch仁/B麦on炭us终Te张st酸1.扯ja榜vaEx炼ch姨an浩ge并r数据雄交换货工具Ex饿ch粪an嗽ge皮r用于蜘在两饱个线丛程之型间交蹄换数膛据,其皇中一太个线睁程执挂行一盒定的弄逻辑贩后需馒要把洪自己冲的某衔个数谦据和即另一孟个线庆程的按数据乎进行备交换典,这嗓个线讲程就叶要等宵待另柱一个伍线程哲的到贿来,嫁两者绸交换葵数据丧后再旦独自些运行。应用税场景赔:两个巨人相掌约某予个时盼刻到匀某个索地点卵进行构交易梢,两醋个人消都到括了之忆后,就一手循交钱维,一资手交风货,扰然后估各忙尤各的棕了。见源掏文件编:Ex巨ch渔an坝ge晨r/愈Ex花ch稠an鸭ge堆rT插es嫁t.爹ja彼va阻塞导队列阻塞劲队列杂常用净于多停线程净编程臣中,夸由于餐协调情线程奥之间瞒的合养作;当队列骄是空锁的时陆,从羽队列距中获若取元补素的集操作吴将会侮被阻坚塞,产或者耗当队槐列是汽满时群,往劈燕队列滑里添卡加元家素的扎操作歌会被锐阻塞。Bl顿oc弄ki埋ng激Qu冒eu据e是个缩慧接口柜,有肉如下定实现纤类:1.执A厨rr胁ay辩Bl垫oc向kQ狐ue斜ue:一个助由数沿组支耍持的托有界睬阻塞耽队列炒。此梳队列侦按FI霞FO(先考进先爆出)宁原则尿对元弊素进激行排伯序。2.唇L标in引ke啄dB狗lo佛ck接Qu捆eu虎e:一个粉可改葵变大酷小的子阻塞稳队列鬼。此独队列收按FI史FO(先甲进先削出)切原则惭对元哗素进牢行排稳序。振创建使其对患象如烈果没闸有明叉确大碎小,复默认爹值是In葛te坐ge灶r.嚼MA黄X_置VA处LU进E。3.呆Pr掩io调ri歌ty然Bl或oc镜ki咐ng渠Qu遥eu亦e:类似产于Li习nk股ed南Bl沾oc脚ki弦ng棍Qu仓eu配e,但紫其所银含对团象的导排序火不是FI惨FO,而梅是依龄据对北象的遍自然瓶排序如顺序销或者限是构邀造函盲数所美带的Co茧mp路ar宝at早or决定植的顺欲序。4.盯Sy娱nc纳hr尼on闻ou麦sQ微ue更ue:同步阳队列里。同姓步队齐列没牌有任术何容务量,趴每个阁插入题必须蒙等待谦另一它个线纳程移芽除,反之兼亦然销。见源塑文件总:Bl贤oc娃ki反ng拾Qu旗eu除e/侨Bl恶oc必ki董ng升Qu层eu挨eT您es睬t.丧ja页va阻塞层队列应用瞒场景梳:可以彩利用两个径只包筝含一奇个元吩素的阻居塞队数列实随现线荷程同棉步(生产艺者-消费挤者)。见源裙文件绕:Bl税oc扫ki港ng踢Qu劲eu饶e/庙Bl不oc往ki亲ng俭Qu遮eu晕eT碗es般t1流.j丙av汇aQu宵eu里e1萝.p逮ut悦

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论