版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
章多線程第一十目標正確理解多線程概念能夠區(qū)分線程與進程的區(qū)別掌握Java中創(chuàng)建線程的兩種方式理解線程優(yōu)先級和死鎖的概念掌握線程的同步和通信概念程序:一段靜態(tài)代碼,它是應(yīng)用軟件執(zhí)行的藍本進程:程序一次動態(tài)執(zhí)行的過程,是程序的最小的代碼單位線程:指運行中的程序調(diào)度單位線程是進程中的實體,一個進程可以擁有多個線程,一個線程必須有一個父進程創(chuàng)建線程第一種方式:在java.lang中定義了一個直接從根類Object中派生的Thread類定義一個名為NewThread的線程publicclassNewThreadextendsThread{ publicvoidrun(){ //具體實現(xiàn)
}}創(chuàng)建線程第二種方式:Runnable接口只包含了一個抽象方法run(),聲明自己的類實現(xiàn)Runnable接口并提供這一方法,將我們的線程代碼寫入其中先實現(xiàn)Runnable接口再通過Thread類的構(gòu)造函數(shù)實現(xiàn)線程Receiverreceiver=newReceiver(mailbox);ThreadreceiveThread=newThread(receiver);receiveThread.setName("接收郵件??!");publicclassReceiverimplementsRunnable{ publicvoidrun(){ //具體實現(xiàn)}}其他線程守護線程(DaemonThread)它是在后臺運行并且為其他線程提供服務(wù)的線程,如垃圾回收器線程組的機制使得多個線程集于一個對象內(nèi),譬如,能用一個方法調(diào)用來啟動或掛起組內(nèi)的所有線程線程狀態(tài)新建狀態(tài)(NewThread)就緒狀態(tài)(Ready)運行狀態(tài)(Running)阻塞狀態(tài)(Blocking)直到線程處于停滯狀態(tài),才可能被執(zhí)行
suspend()方法被調(diào)用,線程處于掛起狀態(tài)sleep()方法被調(diào)用,線程處于睡眠狀態(tài)wait()方法被調(diào)用,線程處于等待狀態(tài)死亡態(tài)(Dead)線程調(diào)度和優(yōu)先級通過Thread類中定義常量實現(xiàn),有三個常量:NORM_PRMIN_PRIORITY指線程可以具有最低的優(yōu)先級,常量值為1IORITY指分配給線程的默認優(yōu)先級,常量值為5MAX_PRIORITY指線程可以具有最高的優(yōu)先級,常量值為10使用setPriority(int
newPriority)方法更改線程的優(yōu)先級(1到10的范圍)線程同步當(dāng)多個線程同時操作同一個資源時,可能會發(fā)生混亂。如一個工資系統(tǒng),當(dāng)管理員修改工資時,正巧有員工查詢工資,這時將有可能出現(xiàn)錯誤線程的同步用于線程共享數(shù)據(jù),轉(zhuǎn)換和控制線程的執(zhí)行保證內(nèi)存的一致性在Java中,運行環(huán)境使用鎖(Monitor)來解決線程同步的問題線程同步Java為每個擁有synchronized方法的對象實例提供了一個鎖,為了完成分配資源的功能,線程必須得到鎖當(dāng)調(diào)用同步(synchronized)方法時,該線程就獲得了鎖,該方法的邊界上實行嚴格的互斥,在同一時刻,只允許一個線程進入該方法,其他希望進入該方法的線程必須等待線程同步第一種方法就是調(diào)用被synchronized關(guān)鍵字修飾的方法。當(dāng)一個線程在一個同步方法內(nèi)部,所以試圖調(diào)用該方法的同實例的其他線程必須等待第二種方法定義一個synchronized同步塊。synchronizedpublicvoiddoTransaction(Stringtrans){//代碼實現(xiàn)}synchronized(object){//代碼實現(xiàn)}死鎖
多個線程同時被阻塞,它們種的一個或者全部在等待某個資源被釋放由于線程被無限期地阻塞,因此程序不可能正常終止導(dǎo)致死鎖的根源在于不適當(dāng)?shù)剡\用
synchronized關(guān)鍵字來管理線程對特定對象的訪問死鎖形成條件互斥條件,即資源是不能夠被共享的至少一個進程在使用一個資源時卻在等待另一個線程所持有的一個資源資源不能夠被進程搶占必須有循環(huán)的等待相關(guān)實踐新建名為MailBox的項目,實現(xiàn)一個多線程的例子,在項目中新建mailbox包在項目中新建類MailBox,用來存儲郵件對象,設(shè)置郵件的容量為1,即只能放一封信,發(fā)信者等待收信者取走信件后,才可以放入新郵件在項目中新建Sender類,用來定義發(fā)信者,發(fā)送郵件到郵箱在項目中新建類Receiver,用來定義收信者,從郵箱取出郵件在項目中新建Test測試類相關(guān)實踐運行結(jié)果小結(jié)
一個進程中可以同時包括多個線程,也就是說一個程序中同時可能進行多個不同的子流程在Java中要實現(xiàn)線程功能,可以繼承java.lang.Thread類,并重新定義run()方法除了繼承T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法制史自考試題及答案
- 醫(yī)院外科考試實操題庫及答案
- 道橋測量考核試題及答案
- 初中課外讀物試題及答案
- 中國華錄集團有限公司2026屆校園招聘正式開啟備考題庫必考題
- 樂清市人力資源和社會保障局關(guān)于公開選調(diào)2名下屬事業(yè)單位工作人員的考試備考題庫必考題
- 北京市豐臺區(qū)北宮鎮(zhèn)社區(qū)衛(wèi)生服務(wù)中心招聘3人一備考題庫附答案
- 古藺縣教育和體育局關(guān)于公開遴選古藺縣城區(qū)公辦幼兒園副園長的考試備考題庫必考題
- 威海銀行2026屆校園招聘備考題庫必考題
- 岳池縣酉溪鎮(zhèn)人民政府關(guān)于公開招聘社區(qū)專職網(wǎng)格員的備考題庫必考題
- 2026年包頭職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試模擬試題含答案解析
- 2026年XX醫(yī)院兒科護理工作計劃
- 液冷系統(tǒng)防漏液和漏液檢測設(shè)計研究報告
- 2025-2026學(xué)年貴州省安順市多校高一(上)期末物理試卷(含答案)
- 呼吸機相關(guān)肺炎預(yù)防策略指南2026
- 妊娠期缺鐵性貧血中西醫(yī)結(jié)合診療指南-公示稿
- 北京市2025年七年級上學(xué)期期末考試數(shù)學(xué)試卷三套及答案
- 2026年上海理工大學(xué)單招職業(yè)適應(yīng)性測試題庫附答案
- TCEC電力行業(yè)數(shù)據(jù)分類分級規(guī)范-2024
- 建設(shè)用地報批培訓(xùn)課件
- 駱駝的養(yǎng)殖技術(shù)與常見病防治
評論
0/150
提交評論