




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、會計學1Java語言語言(yyn)程序設計實驗指導電子教程序設計實驗指導電子教案第案第08章章第一頁,共25頁。8.1.1 8.1.1 什么什么(shn me)(shn me)是是多線程多線程8.1.2 Java8.1.2 Java線程模型線程模型Return第1頁/共24頁第二頁,共25頁。Return 多線程程序比多進程程序需要更少的管理費用。進程是重量級的任務,需要分配給它們獨立(dl)的地址空間。進程間通信是昂貴和受限的。進程間的轉換也是很需要花費的。另一方面,線程是輕量級的選手。它們共享相同的地址空間并且共同分享同一個進程。線程間通信是便宜的,線程間的轉換也是低成本的。當Java程序
2、使用多進程任務處理環境時,多進程程序不受Java的控制,而多線程則受Java控制。 多線程可幫助你編寫出CPU最大利用率的高效程序,使得空閑時間保持最低。這對Java運行的交互式的網絡互連環境是至關重要的,因為空閑時間是公共的。例如,網絡的數據傳輸速率遠低于計算機處理能力,而本地文件系統資源的讀寫速度也遠低于CPU的處理能力。當然,用戶輸入也比計算機慢很多。在傳統的單線程環境中,程序必須等待每一個這樣的任務完成以后才能執行下一步盡管CPU有很多空閑時間。多線程使你能夠獲得并充分利用這些空閑時間。第2頁/共24頁第三頁,共25頁。 Java多線程的優點就在于取消了主循環/輪詢機制。一個(y )線
3、程可以暫停而不影響程序的其他部分。例如,當一個(y )線程從網絡讀取數據或等待用戶輸入時產生的空閑時間可以被利用到其他地方。多線程允許活的循環在每一幀間隙中沉睡一秒而不暫停整個系統。在Java程序中出現線程阻塞,僅有一個(y )線程暫停,其他線程繼續運行。 線程存在多種狀態。線程可以正在運行(running),只要獲得了CPU時間它就可以運行;運行的線程可以被掛起(suspend),并臨時中斷它的執行;一個(y )掛起的線程可以被恢復(resume),允許它從停止的地方繼續運行;一個(y )線程可以在等待資源時被阻塞(block);在任何時候,線程可以被終止(terminate),這將立即中斷
4、運行。一旦終止,線程不能被恢復。線程的各狀態間關系見教材P190頁圖8-1所示。第3頁/共24頁第四頁,共25頁。1 1線程優先級線程優先級第4頁/共24頁第五頁,共25頁。第5頁/共24頁第六頁,共25頁。Return Java的多線程系統建立于Thread類、方法以及共伴接口Runnable基礎上。Thread類封裝了線程的執行。既然不能直接引用運行著的線程的狀態,就要(ji yo)通過它的代理處理它。于是Thread 實例產生了。為創建一個新的線程,程序中必須擴展Thread 或實現Runnable接口。Thread類定義了好幾種方法來幫助管理線程,見教材P192頁表8-1中所列。4 4
5、ThreadThread類和類和RunnableRunnable接口接口(ji ku)(ji ku)第6頁/共24頁第七頁,共25頁。8.2.1 8.2.1 關于主線程關于主線程8.2.2 8.2.2 創建創建(chungjin)(chungjin)一個線程一個線程8.2.3 8.2.3 創建創建(chungjin)(chungjin)多線程多線程8.2.4 8.2.4 使用使用isAlive()isAlive()和和join()join()Return第7頁/共24頁第八頁,共25頁。Return第8頁/共24頁第九頁,共25頁。創建線程最簡單的方法就是創建一個實現Runnable 接口的類
6、,Runnable抽象了一個執行代碼單元。可以通過實現Runnable接口的方法創建每一個對象的線程。為實現 Runnable 接口,一個類僅需實現一個run()的簡單方法,該方法聲明如下:public void run()在run()中,可以定義代碼來構建新的線程。重要的是:run()方法能夠像主線程那樣調用其他方法,引用其他類,聲明變量。僅有的不同是:run()在程序中確立另一個并發的線程執行入口。當run()返回時,該線程結束。在已經創建了實現Runnable接口的類以后,需要在類內部實例化一個Thread類的對象。Thread 類定義了好幾種構造函數。我們會用到的如下:Thread(R
7、unnable threadOb, String threadName)在該構造函數中,threadOb是一個實現Runnable接口類的實例。這定義了線程執行的起點(qdin),新線程的名稱由threadName定義。建立新的線程后,它并不運行直到調用其start()方法,該方法在Thread 類中定義。從本質上講,start()執行的是一個對run()的調用。start()方法聲明如下:void start( )下面我們分別對這兩種方法進行介紹: 1 1實現實現RunnableRunnable接口接口第9頁/共24頁第十頁,共25頁。Return 到這里,讀者可能會奇怪為什么Java有兩種
8、創建子線程的方法,哪一種更好呢。所有的問題都歸于一點。Thread類定義了多種方法可以被派生類重載。對于所有的方法,唯一的必須被重載的是run()方法。這當然是實現Runnable接口所需的同樣的方法。很多Java程序員認為類僅在它們被加強(jiqing)或修改時被擴展。因此,如果你不重載Thread的其他方法,最好只實現Runnable 接口,這當然由自己決定。在本章的其他部分,我們應用實現Runnable接口的類來創建線程。 3 3選擇合適的方法選擇合適的方法第10頁/共24頁第十一頁,共25頁。Return第11頁/共24頁第十二頁,共25頁。Return第12頁/共24頁第十三頁,共2
9、5頁。Return第13頁/共24頁第十四頁,共25頁。8.4.1 8.4.1 使用使用(shyng)(shyng)同步方法同步方法8.4.2 8.4.2 同步語句同步語句Return第14頁/共24頁第十五頁,共25頁。Return第15頁/共24頁第十六頁,共25頁。Return第16頁/共24頁第十七頁,共25頁。8.5.1 Java8.5.1 Java中的線程通訊中的線程通訊(tngxn)(tngxn)8.5.2 8.5.2 關于死鎖關于死鎖Return第17頁/共24頁第十八頁,共25頁。Return第18頁/共24頁第十九頁,共25頁。Return第19頁/共24頁第二十頁,共25頁。8.6.1 8.6.1 掛起、恢復掛起、恢復(huf)(huf)和終和終止線程止線程8.6.2 Java 28.6.2 Java 2中的線程控制中的線程控制8.6.3 8.6.3 使用使用instanceofinstanceofReturn第20頁/共24頁第二十一頁,共25頁。Return第21頁/共24頁第二十二頁,共25頁。Return第22頁/共24頁第二十三頁,共25頁。Return第23頁/共24頁第二十四頁,共25頁。NoImage內容(nirng)總結會計學。然而,多任務處理有兩種截然不同的類型:基于進程的和基于線程的。搞清楚兩者的區別是很重要(zhngyo)的。因
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煙葉采摘活動方案
- 烤肉門店暑期活動方案
- 燒烤全羊活動方案
- 外場津貼發放管理辦法
- 戒毒服務醫療管理辦法
- 媒體接待維護管理辦法
- 地震用品儲備管理辦法
- 客房服務服務管理辦法
- 訴訟保全業務管理辦法
- 簽訂框架協議管理辦法
- TCAMIE 19-2024 城鎮污水處理廠全過程除臭技術規程
- 數據分析與挖掘實戰手冊
- 大宗商品貿易實務操作手冊
- 數字化賦能高校思政課建設的策略研究
- 整體施工勞務服務方案
- 2025年度地下綜合管廊代建合同模板
- 中藥材種植安全事故應急預案
- 水泥攪拌樁施工項目進度管理措施
- 國家開放大學法學本科《商法》期末紙質考試第四大題案例分析庫2025珍藏版
- 2024年山東省消防工程查驗技能競賽理論考試題庫-下(多選、判斷題)
- 人工智能賦能教師數字素養提升
評論
0/150
提交評論