




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java程序設計精編教程 第12章配合例子源代碼一起使用Power point 制作:耿祥義 張躍平Java多線程機制 2010-8-11導讀主要內容Java中的線程Thread子類創(chuàng)建線程使用Runnable接口線程的常用方法線程同步在同步方法中使用wait()、notify 和notifyAll()方法線程聯(lián)合2010-8-1212.1 進程與線程 12.1.1 操作系統(tǒng)與進程 程序是一段靜態(tài)的代碼,它是應用軟件執(zhí)行的藍本。 進程是程序的一次動態(tài)執(zhí)行過程,它對應了從代碼加載、執(zhí)行至執(zhí)行完畢的一個完整過程,這個過程也是進程本身從產生、發(fā)展至消亡的過程。 現(xiàn)代操作系統(tǒng)可以同時管理一個計算機系統(tǒng)
2、中的多個進程,即可以讓計算機系統(tǒng)中的多個進程輪流使用CPU資源。2010-8-1312.1.2 進程與線程 線程是比進程更小的執(zhí)行單位,一個進程在其執(zhí)行過程中,可以產生多個線程,形成多條執(zhí)行線索,每條線索,即每個線程也有它自身的產生、存在和消亡的過程。 線程間可以共享進程中的某些內存單元(包括代碼與數(shù)據(jù)),線程的中斷與恢復可以更加節(jié)省系統(tǒng)的開銷。2010-8-1412.2 Java中的線程 12.2.1 Java的多線程機制 Java語言的一大特性點就是內置對多線程的支持。 Java虛擬機快速地把控制從一個線程切換到另一個線程。這些線程將被輪流執(zhí)行,使得每個線程都有機會使用CPU資源。 每個J
3、ava應用程序都有一個缺省的主線程。 JVM一直要等到Java應用程序中的所有線程都結束之后,才結束Java應用程序 。 2010-8-1512.2.2 線程的狀態(tài)與生命周期 建的線程在它的一個完整的生命周期中通常要經歷如下的四種狀態(tài):1新建: 當一個Thread類或其子類的對象被聲明并創(chuàng)建時,新生的線程對象處于新建狀態(tài)。2運行 :線程必須調用start()方法(從父類繼承的方法)通知JVM,這樣JVM就會知道又有一個新一個線程排隊等候切換了。一旦輪到它來享用CPU資源時,此線程的就可以脫離創(chuàng)建它的主線程獨立開始自己的生命周期了。 3中斷:有4種原因的中斷: JVM將CPU資源從當前線程切換給
4、其他線程,使本線程讓出CPU的使用權處于中斷狀態(tài)。 線程使用CPU資源期間,執(zhí)行了sleep(int millsecond)方法,使當前線程進入休眠狀。 線程使用CPU資源期間,執(zhí)行了wait()方法。 線程使用CPU資源期間,執(zhí)行某個操作進入阻塞狀態(tài)。4死亡 :處于死亡狀態(tài)的線程不具有繼續(xù)運行的能力。線程釋放了實體。 例題12010-8-1612.2.3 線程調度與優(yōu)先級 處于就緒狀態(tài)的線程首先進入就緒隊列排隊等候CPU資源,同一時刻在就緒隊列中的線程可能有多個。Java虛擬機(JVM)中的線程調度器負責管理線程,調度器把線程的優(yōu)先級分為10個級別,分別用Thread類中的類常量表示。 Ja
5、va調度器的任務是使高優(yōu)先級的線程能始終運行,一旦時間片有空閑,則使具有同等優(yōu)先級的線程以輪流的方式順序使用時間片。 2010-8-1712.3 Thread類與線程的創(chuàng)建 12.3.1 使用Thread的子類 在Java語言中,用Thread類或子類創(chuàng)建線程對象。 在編寫Thread類的子類時,需要重寫父類的run()方法,其目的是規(guī)定線程的具體操作,否則線程就什么也不做,因為父類的run()方法中沒有任何操作語句。 例題12010-8-1812.3.2 使用Thread類 創(chuàng)建線程的另一個途徑就是用Thread類直接創(chuàng)建線程對象。使用Thread創(chuàng)建線程通常使用的構造方法是:Thread(
6、Runnable target) 該構造方法中的參數(shù)是一個Runnable類型的接口。 在創(chuàng)建線程對象時必須向構造方法的參數(shù)傳遞一個實現(xiàn)Runnable接口類的實例,該實例對象稱作所創(chuàng)線程的目標對象,當線程調用start()方法后,一旦輪到它來享用CPU資源,目標對象就會自動調用接口中的run()方法(接口回調)。 例題22010-8-1912.3.3 關于run()方法啟動的次數(shù) 對于具有相同目標對象的線程,當其中一個線程享用CPU資源時,目標對象自動調用接口中的run方法,這時,run方法中的局部變量被分配內存空間,當輪到另一個線程享用CPU資源時,目標對象會再次調用接口中的run方法,那
7、么,run()方法中的局部變量會再次分配內存空間。也就是說run()方法已經啟動運行了兩次,分別運行在不同的線程中,即運行在不同的時間片內。 例題22010-8-11012.4 線程的常用方法 1start() : 線程調用該方法將啟動線程,使之從新建狀態(tài)進入就緒隊列排隊,一旦輪到它來享用CPU資源時,就可以脫離創(chuàng)建它的線程獨立開始自己的生命周期了。2run(): Thread類的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來定義線程對象被調度之后所執(zhí)行的操作,都是系統(tǒng)自動調用而用戶程序不得引用的方法。 3sleep(int millsecond): 優(yōu)先級高的
8、線程可以在它的run()方法中調用sleep方法來使自己放棄CPU資源,休眠一段時間。 4isAlive(): 線程處于“新建”狀態(tài)時,線程調用isAlive()方法返回false。在線程的run()方法結束之前,即沒有進入死亡狀態(tài)之前,線程調用isAlive()方法返回true。 例題3 5currentThread():該方法是Thread類中的類方法,可以用類名調用,該方法返回當前正在使用CPU資源的線程。 6interrupt() :一個占有CPU資源的線程可以讓休眠的線程調用interrupt()方法“吵醒”自己,即導致休眠的線程發(fā)生InterruptedException異常,從而
9、結束休眠,重新排隊等待CPU資源。 例題42010-8-11112.5 線程同步 在處理多線程問題時,我們必須注意這樣一個問題:當兩個或多個線程同時訪問同一個變量,并且一個線程需要修改這個變量。我們應對這樣的問題作出處理。 在處理線程同步時,要做的第一件事就是要把修改數(shù)據(jù)的方法用關鍵字synchronized來修飾。 所謂線程同步就是若干個線程都需要使用一個synchronized修飾的方法。 例題52010-8-11212.6 在同步方法中使用wait()、notify 和otifyAll()方法 wait()方法可以中斷方法的執(zhí)行,使本線程等待,暫時讓出CPU的使用權,并允許其它線程使用這個同步方法。 notifyAll()方法通知所有的由于使用這個同步方法而處于等待的線程結束等待。曾中斷的線程就會從剛才的中斷處繼續(xù)執(zhí)行這個同步方法,并遵循
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州中醫(yī)藥大學時珍學院《物理治療基礎(含評定、理療)》2023-2024學年第二學期期末試卷
- 江西應用科技學院《健美操(大眾)》2023-2024學年第二學期期末試卷
- 溫州商學院《中華文化(文學篇)》2023-2024學年第一學期期末試卷
- 江西中醫(yī)藥大學《木材加工裝備學》2023-2024學年第二學期期末試卷
- 廣東環(huán)境保護工程職業(yè)學院《美容化妝》2023-2024學年第一學期期末試卷
- 江蘇省常熟市2024-2025學年高三下學期第二次模擬考語文試題試卷含解析
- 濮陽職業(yè)技術學院《幼兒歌曲即興伴奏》2023-2024學年第二學期期末試卷
- 山東省濟寧市市中區(qū)達標名校2025屆初三春季診斷性測試物理試題含解析
- 重慶醫(yī)藥高等??茖W?!豆残l(wèi)生實踐技能培訓》2023-2024學年第二學期期末試卷
- 2024-2025學年廣西南寧市第二十一中學初三第二學期月考(三)物理試題含解析
- 護士N1晉級N2述職報告
- 中國糖尿病防治指南(2024版)解讀
- 食堂食材配送采購投標方案(技術標)
- 山東省汶上縣市級名校2025屆中考生物全真模擬試卷含解析
- 2025年度智能硬件產品全國區(qū)域獨家代理合同3篇
- 辦公室安全知識培訓課件
- 2025年四川省成都市青白江區(qū)招聘50人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年浙江嘉興市眾業(yè)供電服務限公司招聘38人高頻重點提升(共500題)附帶答案詳解
- 【課件】第12課+理想與典范-古希臘與古羅馬美術+課件高中美術人教版(2019)美術鑒賞
- 建筑行業(yè)安全隱患舉報獎勵機制
- 公司事故隱患內部報告獎勵機制
評論
0/150
提交評論