




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第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屆高三年級五月模擬訓練語文試卷(含答案詳解)
- 生物安全管理體系文件
- 國家開放大學《工程數學(本)》形考任務1-5答案
- 中國食物成分表2018年(標準版)第6版
- 2023浙江省學生藝術特長測試A級理論復習資料
- 建筑業企業資質職稱人員相近專業認定目錄
- 歡樂童年放飛夢想六一兒童節文藝匯演流程介紹PPT模板
- GNSS實習報告
- 畢業設計(論文)-CK6150總體及縱向進給和尾座部件的設計
- 燒結普通磚、多孔磚回彈計算
- (完整版)PICC維護操作流程及評分標準
評論
0/150
提交評論