版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章线程白宏斌6.1线程进程,是系统运行的基本单元,一个进程中至少包括一个线程(主线程),作为程序运行的入口。进程间不共享内存,而同一进程内的各线程可共享内存数据。通过多线程,可以实现并发操作、提升系统运行效率、改善用户体验等功能。在Java语言中,通过Thread类及其子类,或者通过实现Runnable接口,创建的对象称作线程。6.1线程Java应用程序运行时启动一个线程,这个线程称作“主线程”,该线程负责执行main方法。如果main方法中没有创建其他的线程,那么当main方法执行完时Java应用程序结束。如果main方法中又创建了其他线程,那么JVM在主线程和其他线程之间轮流切换,轮流执行,这时JVM要等到主线程中的所有线程都执行结束后,才结束Java应用程序。6.1线程-生命周期新建运行中断死亡为线程分配内存空间和资源线程调用start()方法通知JVM新线程排队,当JVM将CPU使用权切换给线程时run()方法就立刻执行程序在Thread类的子类中重写run()方法来覆盖父类的run()方法,从而规定了该线程的具体使命;在线程没有结束run()方法之前,线程不能再调用start方法。线程中断条件:1.JVM将CPU资源从当前线程切换给其他线程。2.线程运行期间执行了sleep()方法,使当前线程进入休眠状态。3.线程运行期间,执行了wait()方法,使得当前线程进入等待状态。4.线程执行期间,执行某个操作从而进入阻塞状态。线程死亡条件:1.线程完成全部工作,结束了run方法。2.强制run方法结束,如执行return或者interrupted()中断线程。线程释放分配的内存空间和资源6.1线程-优先级Java虚拟机把线程的优先级分为10个级别,分别用Thread类中的类常量表示。可以通过线程的setPriority(intgrade)方法调整,getPriority()方法返回线程的优先级Thread.MIN_PRIORITY1Thread.MAX_PRIORITYThread.NORM_PRIORITY1056.2创建线程通过继承Thread类创建线程;Thread类的run方法没有任何操作语句,因此创建线程需要重写run方法,完成具体业务。6.2创建线程线程的常用方法start()
线程调用该方法将启动线程,使之从新建状态进入就绪队列排队run()
用来定义线程对象被调度之后所执行的操作 继承Thread类,主要需要重写父类的run方法 run()方法由系统自动调用,用户程序不得引用sleep(intmillsecond)
线程在run方法中调用sleep方法来使自己放弃CPU资源,休眠millsecond毫秒6.2创建线程线程的常用方法currentThread()
返回当前正在使用CPU资源的线程interrupt()
唤醒休眠的线程,重新排队等待CPU资源getName()
返回该线程的名称setName(String
name)
设置该线程的名称为name6.2创建线程classPetextendsThread{Pet(Strings){setName(s);}publicvoidrun(){for(inti=1;i<=8;i++){System.out.println("Thread:我是"+getName()+":"+i);}}}publicclassDemoThread{publicstaticvoidmain(Stringargs[]){Petgarfield,odie;garfield=newPet("加菲");odie=newPet("欧迪");garfield.start();for(inti=1;i<=8;i++){System.out.println("Main:我是老姜"+":"+i);}odie.start();}}6.颈2忍创建盲线程cl院as姐s老Pe裹t窗ex徒te常nd临s积Th敲re娱ad丢{in盖t越n=蛛0;Pe籍t(吃St屠ri术ng浇s祥){se悦tN储am翁e(甜s)款;}Pe埋t(搏St清ri纺ng燥s责,i画nt拨n再){se链tN庄am惰e(现s)膊;th瘦is不.n雁=n常;}pu坏bl师ic币v魄oi丑d骗ru讯n(效){fo声r(欲in林t看i=址1;品i<谜=8恋;i荷++节){Sy美st搁em绸.o截ut湖.p湿ri共nt握ln刚("季Th领re低ad惰:我是"+范ge梢tN则am司e(伶)+桥":欣"+帝i)岁;tr预y{冈s珍le淹ep输(n贯);展}含ca桶tc唱h(妖In帆te歪rr绩up支te尚dE易xc耽ep角ti描on浙e缎){担}}}}pu感bl任ic荒c意la第ss厌D右em鄙oT喜hr赏ea荣dS拼le洗ep琴{pu申bl纷ic伪s股ta忙ti塔c谦vo饲id向m挡ai垦n(际St尾ri预ng唉a称rg钩s[品]欢){Pe屯t岔ga挺rf强ie旱ld济,o回di修e;ga兰rf妙ie牵ld烘=n啊ew穗P搞et谷("加菲",奖20码0)霜;od蚊ie编=n谊ew犹P仍et厨("欧迪",沉10姑0)搬;ga苏rf祥ie把ld研.s现ta钻rt蛮()扎;fo款r(冲in番t昼i=谋1;泡i<稠=8胳;i根++庸){Sy序st筑em迷.o历ut窗.p既ri驻nt上ln冒("姜Ma币in以:我是毫老姜"+淘":枣"+众i)涛;}od爽ie粘.s策ta随rt桶()掠;}}6.避2爸创建型线程cl诵as岛s篮Pe括t脖ex拒te某nd咐s幼Th糕re阅ad粪{pr筒iv醋at哈e找in最t蜡pi理eC洲ou云nt拖;Pe习t(岩St拿ri迟ng龄s描,i横nt沸c狱ou惯nt睁){se阳tN哪am茂e(万s)蝴;pi讽eC皂ou伴nt深=c节ou响nt吵;}pu销bl坚ic垄v请oi膏d鹿ru低n(差){wh涛il誓e(般tr来ue云){pi魂eC奋ou源nt个=p饺ie蜘Co伤un适t-据1;Sy溜st毕em辨.o忠ut篮.p出ri牲nt侧ln泳("悼Th慎re奶ad青:我是"+跃ge最tN滋am傍e(备)+淘"吃了绪一个产馅饼涛,还疏剩"+工pi旦eC圆ou岂nt爷+"个")质;if叨(p坚ie闭Co阁un触t<坑=0津)re岩tu浩rn元;}}}pu民bl滋ic抬c豆la振ss霉D友em详oP渔ie牧{pu鹅bl骆ic第s对ta推ti患c士vo玩id显m疏ai酿n(始St愁ri伴ng备a锻rg丧s[培]这){Pe冲t差ga锹rf国ie询ld帆,o瓣di损e;in站t荐pi时eC建ou发nt灶=5痰;棒//大家扣一起悲吃五康个馅杨饼ga腐rf宫ie继ld汪=n混ew或P己et背("加菲",含pi继eC劳ou胶nt宏);od茂ie虽=n秀ew斤P员et熟("欧迪",邻pi构eC河ou带nt步);ga膝rf遇ie竖ld士.s忠ta慨rt倦()分;od循ie夕.s票ta蝇rt办()聋;}}与预塌期的自效果豪一样秆吗?6.难3逝使用躺Ru膝na袭bl北e接怨口继承Th像re铃ad类的统子类乔不能丘再继录承其挡他的识类。创建枯线程宏的另电一个教途径气是用Th垃re疮ad类直怕接创底建线耐程对橡象:Th庸re沫ad(Ru恐nn约ab糠le途t彻ar墨ge科t)在创垄建线案程对龟象时闯必须爪向构初造方使法的休参数艰传递矛一个裕实现Ru拔nn购ab邮le接口伍类的允实例才,该奶实例侮对象滚称作露所创趁线程帽的目抽标对促象当使椒用构塌造方体法Th酱re俘ad焦(R设un夹na齿bl盗e异ta鱼rg偏et车)创建惨线程短时,韵当该耕线程轨调用st项ar答t(谋)方法文时,由目标榨对象做自动讨调用鄙接口汽中的ru肝n(梯)方法独(接堵口回迫调)筑。使用烫同一禁个目席标对居象的颠线程残,共售享目帜标对巴象的糠数据笼单元休。6.逐3纲使用犯Ru停na轻bl恢e接攻口cl隶as馋s陡Pe曲t刑im至pl委em昼en抄ts咏R肌un厨na拾bl丹e{pr京iv外at哀e由in脂t男pi赴e=奋0;St浅ri岸ng理n皮am威e1雷,n侨am滥e2卫;Pe丽t(东St偏ri蜡ng傍s餐1,便St却ri筹ng绩s材2)慎{na沟me毕1=猴s1初;na臂me侮2=添s2闸;}pu摇bl挖ic刻v惊oi酷d葛se岭tp饲ie糕(i付nt催m博ou真nt缺){pi之e=育mo规un蔽t;}pu男bl亡ic马v乘oi榆d辣ru爱n(敌){wh失il惯e(绝tr稳ue腐){pi烘e=泼pi定e-酷1;if正(T教hr参ea局d.来cu盗rr宏en规tT削hr葡ea昆d(简).糟ge线tN斗am或e(饰).刑eq嗓ua恳ls港(n良am并e1统))体{Sy针st鸽em插.o井ut滔.p事ri拘nt买ln初("我是"+挨na垄me均1+振",吃锅了一趣个,寒现在季一共蜓有"+翻pi啊e+联"个馅销饼")魂;if漆(p汪ie滨<=赠0)烛{Sy秆st昨em教.o萌ut皆.p易ri患nt汇ln铺(n析am炮e1伐+"不打窝算再谅吃了")毒;re枕tu然rn益;}}el总se裹i子f(元Th快re厅ad爽.c得ur圣re圈nt嫁Th摊re庭ad车()开.g糖et铺Na恶me迎()套.e倾qu层al纲s(穷na踩me培2)义){Sy属st饲em喷.o耽ut外.p料ri托nt少ln伙("我是"+报na耽me荐2+寺",吃峡了一闸个,辽现在伏一共怖有"+铜pi擦e+口"个馅政饼")俩;if溉(p忙ie仿<=骄5)暖{Sy扭st扔em均.o划ut朵.p震ri道nt吓ln苗(n属am队e2压+"不打姿算再坝吃了")翼;re厨tu君rn凉;}}tr候y{惧T块hr捆ea电d.并sl的ee圈p(西80辣0)嘉;}ca剪tc瞧h(吴In掘te暗rr树up雾te销dE苦xc搜ep茫ti昼on锋e般)服{}}雷}}pu肚bl暖ic策c宪la轧ss闲D牙em直oR眯un骑na薄bl撕e{pu命bl构ic助s煎ta汇ti剑c老vo拢id舞m揪ai龄n(数St肝ri娱ng榆a取rg尤s[保]婶){St辅ri亿ng羞s发1=央"加菲",迁s2杆="欧迪";Pe扶t熟pe肺t=咸ne模w昏Pe殃t(好s1萝,s嘴2)锄;Th剥re焦ad姓g肚ar增fi跑el两d,吉od牙ie蓄;ga旦rf倚ie宣ld叨=n己ew夹T恨hr父ea佣d(朝pe再t)丢;od门ie槽=n园ew示T今hr晒ea卫d(虎pe咱t)造;ga获rf裙ie漂ld扮.s灶et导Na鲁me软(s名1)决;od冈ie截.s致et明Na婆me滤(s堪2)稼;pe蝴t.裙se认tp嘱ie粥(8热);ga辆rf并ie刺ld琴.s乒ta放rt名()很;od吴ie约.s圣ta液rt锣()谢;}}6.浩3惑使用酬Ru狼na测bl庙e接颤口两种税实现毫线程谱的方解法的贺差别继承Th颤re尸ad父类精容易火实现实现Ru毛nn仪ab浆le接口绣可避辩免Ja蔬va单继涌承的技局限母性实现Ru豪nn死ab卖le接口末可实遇现多嫁个线泽程对职统一降资源夫的访茫问6.碗4剃线程怠同步线程扮同步如果度一个鸟线程A执行果时调棉用同免步(s洁yn舱ch收ro治ni予ze贝d)方法甩,那恐么在寇该同乖步方轨法返予回之叉前,拦其他恢占有CP随U资源赢的线锻程一侨旦调妻用这画个同薄步方左法就键会引饲起堵泰塞,齐堵塞丘的线阀程要趴一直咬等到乒堵塞命的原狮因消结除,才能言使用独这个寇同步雄方法掠。6.足4谨线程州同步cl偶as农s岗Pe潮t付im坝pl元em絮en咽ts阿R假un着na拆bl喂e{pr渴iv拢at概e声in引t睁pi饮e=直0;St记ri粒ng份n览am粪e1府,n拼am撑e2婶;Pe脸t(馅St桃ri腰ng裹s喂1,栽St撤ri僵ng发s楚2)导{na拍me做1=抓s1冲;na该me步2=倡s2点;}pu集bl户ic域v毕oi绝d愉se艇tp扛ie封(i旺nt席m绕ou展nt极){pi锈e=牙mo扶un胖t;}pu霞bl百ic熟s苍yn镜ch珠ro亿ni队ze兽d著vo股id罗r眠un烤()搏{wh罪il萍e(环tr陪ue铅){pi件e=私pi闹e-德1;if泉(T咏hr现ea软d.行cu态rr纹en楼tT灭hr滋ea有d(暂).六ge招tN猛am蛮e(味).志eq仍ua骂ls象(n宇am坚e1坊))污{Sy纳st扩em届.o待ut夺.p女ri报nt鼠ln云("我是"+星na闻me妨1+是",吃头了一薯个,巩现在印一共心有"+猜pi搭e+厌"个馅撇饼")膀;if机(p覆ie谅<=危0)坚{Sy玩st强em墨.o诞ut妈.p跳ri娇nt柱ln弄(n筒am滨e1组+"不打灰算再饱吃了")竖;re按tu惭rn咸;}}el锋se穴i肺f(裹Th京re州ad股.c席ur亭re删nt伸Th雀re储ad孩()营.g徐et芦Na圆me饿()界.e蓝qu院al雨s(益na轻me房诚2)廊){Sy肉st汤em音.o锅ut贝.p苍ri腥nt漆ln竟("我是"+撑na木me亩2+伯",吃匪了一鞋个,填现在叉一共笋有"+努pi彩e+纲"个馅雀饼")辅;if们(p虾ie没<=饼5)磁{Sy柄st晃em辫.o震ut写.p此ri添nt应ln蕉(n限am现e2柜+"不打屈算再飘吃了")闯;re辉tu行rn浊;}}tr两y{枯T体hr录ea澡d.伯sl急ee缴p(氏80景0)甜;}ca兆tc封h(跑In生te蔬rr捷up输te殊dE孟xc母ep牲ti择on夏e殖)敲{}}饿}}pu友bl饶ic趣c娇la气ss轧D雄em本oS立yn吩ch狱ro吩ni授ze熟d{pu娇bl沃ic财s增ta宣ti停c张vo扩id购m夹ai匹n(醋St骄ri妥ng乔a尼rg孙s[蹄]附){St求ri芒ng钥s气1=添"加菲",捎s2唉="欧迪";Pe累t瘦pe悦t=改ne锣w损Pe贞t(旬s1笼,s耽2)茧;Th圾re贫ad猾g耐ar篇fi灾el嚷d,话od然ie霜;ga叼rf典ie蛙ld超=n俘ew其T昏hr幅ea卸d(拿pe掌t)挥;od宋ie清=n脆ew齐T旅hr馋ea皮d(悔pe腐t)炊;ga天rf础ie芳ld览.s阳et母Na劝me幻玉(s耻1)禾;od塘ie介.s焦et脊Na吐me誓(s稍2)懒;pe厘t.逆se剃tp斩ie鹊(8汤);od初ie椒.s玩ta耽rt少()笋;ga境rf赢ie眼ld粱.s占ta黄rt墓()誉;}}6.鹿4报线程被同步同步般方法巩中使课用wa撞it、no勉ti尘fy和no抄ti位fy筒al恒l以上沿三个弓方法罢都是Ob卫je枣ct类的fi挪na桂l方法秃,被内所有材的类饥继承应,且保不允身许重斧写wa钩it闯()方法菜可以勺中断喉方法沟的执口行,么使本贼线程因等待射,并叙允许丽其它厉线程甩使用轧同步惧方法稳。no挥ti爷fy杜Al娇l(努)方法唱通知帜所有艳的由攻于使梅用这房诚个同霉步方墙法而虎处于杂等待洗的线致程结何束等瓦待。no枪ti辜fy见()方法捐通知惧处于性等待混的某火个线庭程结豪束等资待。publicclassDemoNotify{publicstaticvoidmain(Stringargs[]){Strings1="老姜",s2="加菲",s3="欧迪";Cinemac=newCinema(s1,s2,s3);Threadjohn,garfield,odie;john=newThread(c);garfield=newThread(c);odie=newThread(c);john.setName(s1);garfield.setName(s2);odie.setName(s3);garfield.start(); john.start();odie.start();}}classCinemaimplementsRunnable{TicketSellerseller;Stringname1,name2,name3;Cinema(Strings1,Strings2,Strings3){seller=newTicketSeller();name1=s1;name2=s2;name3=s3;}publicvoidrun(){if(Thread.currentThread().getName().equals(name1)){seller.sellTicket(20);}elseif(Thread.currentThread().getName().equals(name2)){seller.sellTicket(10);}elseif(Thread.currentThread().getName().equals(name3)){seller.sellTicket(5);}}}classTicketSeller{intfiveNumber=1,tenNumber=0,twentyNumber=0;//售票员初始状态有1张五元
publicsynchronizedvoidsellTicket(intreceiveMoney){Strings=Thread.currentThread().getName();if(receiveMoney==5){fiveNumber=fiveNumber+1;System.out.println(s+"给售票员5元钱,售票员卖给"+s+"一张票,不必找零");}elseif(receiveMoney==10){while(fiveNumber<1){try{System.out.println(s+"给售票员10元钱");System.out.println("售票员请"+s+"靠边等一会");wait();//线程占有CPU期间执行了wait()则进入中断状态
System.out.println(s+"结束等待,继续买票");}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber+1;System.out.println(s+"给售票员10元钱,售票员卖给"+s+"一张票,找零5元");}elseif(receiveMoney==20){while(fiveNumber<1||tenNumber<1){try{System.out.println(s+"给售票员20元钱");System.out.println("售票员请"+s+"靠边等一会");wait();System.out.println(s+"结束等待,继续买票");}catch(InterruptedExceptione){}}fiveNumber=fiveNumber-1;tenNumber=tenNumber-1;twentyNumber=twentyNumber+1;System.out.println(s+"给售票员20元钱,售票员卖给"+s+"一张票,找零15元");}notifyAll();}}电影即院售橡票员手手上安有5元钱非,老庭姜、评加菲钟和欧览迪分左别拿挡着20元、10元和5元去次购买纲面额党为5元的摊电影很票看拔电影永,请萍考虑行实现秧其购奇票过倡程6.族5覆线程神联合pu奔bl皱ic章c卷la委ss就D址em未oT轿hr蜜ea贡dJ登oi廊n{pu鸽bl棕ic恒s扭ta参ti叛c僚vo横id馆m农ai荐n(撒St鬼ri冬ng剑a嘴rg古s[讨]街){Jo罗in贺Th而re扛ad尊a屿=n缠ew症J败oi震nT辜hr告ea居d搜()锻;a.减ca亡t.末st丑ar斗t(编);}}cl选as泰s盏Jo腥in懒
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国紧凑型真空干燥箱行业头部企业市场占有率及排名调研报告
- 2025-2030全球高纯涡轮分子泵行业调研及趋势分析报告
- 自治物业管理合同
- 工厂员工劳动合同范本
- 展柜采购合同
- 农场承包合同协议书
- 建筑工程合同的简述
- 杭州市二手房买卖合同
- 砌体施工劳务合同
- 2025抵押担保借款合同
- 医院课件:《食源性疾病知识培训》
- 浙教版七年级数学下册单元测试题及参考答案
- 华为人才发展与运营管理
- 卓有成效的管理者读后感3000字
- 七年级下册-备战2024年中考历史总复习核心考点与重难点练习(统部编版)
- 岩土工程勘察服务投标方案(技术方案)
- 实验室仪器设备验收单
- 新修订药品GMP中药饮片附录解读课件
- 蒙特利尔认知评估量表北京版
- 领导干部个人有关事项报告表(模板)
- GB/T 7631.18-2017润滑剂、工业用油和有关产品(L类)的分类第18部分:Y组(其他应用)
评论
0/150
提交评论