歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > PPT文檔下載  

Java程序設(shè)計(jì)實(shí)例教程-第8章.ppt

  • 資源ID:6361723       資源大?。?span id="q51hzhu" class="font-tahoma">945.50KB        全文頁(yè)數(shù):29頁(yè)
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

Java程序設(shè)計(jì)實(shí)例教程-第8章.ppt

第8章多線(xiàn)程 本次課程內(nèi)容 認(rèn)識(shí)多線(xiàn)程線(xiàn)程概念創(chuàng)建多線(xiàn)程線(xiàn)程的 一生 線(xiàn)程的優(yōu)先級(jí)線(xiàn)程的同步 1 認(rèn)識(shí)多線(xiàn)程 當(dāng)我們使用電腦時(shí) 可以一邊聽(tīng)音樂(lè) 一邊QQ聊天 一邊打游戲 一個(gè)CPU怎么可以同時(shí)作這么多事情呢 難道電腦真的可以同時(shí)運(yùn)行多個(gè)程序 真的嗎 在同一時(shí)間點(diǎn)執(zhí)行各項(xiàng)進(jìn)程 編譯程序發(fā)送 接收郵件打印文件其他 操作系統(tǒng)允許計(jì)算機(jī)同時(shí)執(zhí)行多項(xiàng)操作 程序 進(jìn)程 publicclassmainClass publicstaticvoidmain Stringagrs m1 publicstaticvoidm1 m2 m3 publicstaticvoidm2 publicstaticvoidm3 單線(xiàn)程 雙線(xiàn)程 2 線(xiàn)程概念 程序 進(jìn)程與多任務(wù)程序 program 是對(duì)數(shù)據(jù)描述與操作的代碼的集合 是應(yīng)用程序執(zhí)行的腳本 進(jìn)程 process 是程序的一次執(zhí)行過(guò)程 是系統(tǒng)運(yùn)行程序的基本單位 程序是靜態(tài)的 進(jìn)程是動(dòng)態(tài)的 系統(tǒng)運(yùn)行一個(gè)程序即是一個(gè)進(jìn)程從創(chuàng)建 運(yùn)行到消亡的過(guò)程 多任務(wù) multitask 在一個(gè)系統(tǒng)中可以同時(shí)運(yùn)行多個(gè)程序 即有多個(gè)獨(dú)立運(yùn)行的任務(wù) 每個(gè)任務(wù)對(duì)應(yīng)一個(gè)進(jìn)程 線(xiàn)程線(xiàn)程 thread 就是比進(jìn)程更小的運(yùn)行單位 是程序中單個(gè)順序的流控制 一個(gè)進(jìn)程中可以包含多個(gè)線(xiàn)程 簡(jiǎn)單來(lái)講 線(xiàn)程是一個(gè)獨(dú)立的執(zhí)行流 是進(jìn)程內(nèi)部的一個(gè)獨(dú)立執(zhí)行單元 相當(dāng)于一個(gè)子程序 3 創(chuàng)建多線(xiàn)程 JDK提供的相關(guān)類(lèi)和接口 1 Runnable接口 就提供一個(gè)方法run 2 Thread類(lèi) 實(shí)現(xiàn)了Runnable接口創(chuàng)建線(xiàn)程的兩種方法 創(chuàng)建Thread類(lèi)的子類(lèi) 重寫(xiě)該類(lèi)的run方法創(chuàng)建Runnable接口的實(shí)現(xiàn)類(lèi) 實(shí)現(xiàn)接口中的run方法 方法一 創(chuàng)建Thread的子類(lèi) 創(chuàng)建Thread的子類(lèi)創(chuàng)建線(xiàn)程對(duì)象啟動(dòng)線(xiàn)程start 方法可以啟動(dòng)線(xiàn)程 開(kāi)始執(zhí)行run 中代碼 即 run 內(nèi)代碼 不是調(diào)用執(zhí)行 而是啟動(dòng)后 由虛擬機(jī)自動(dòng)執(zhí)行的 classMyThreadextendsThread publicvoidrun for inti 1 i 30 i System out println 線(xiàn)程 getName 正在打印 i publicstaticvoidmain String args System out println main開(kāi)始執(zhí)行 MyThreadmt newMyThread MyThreadmt2 newMyThread mt start mt2 start for inti 1 i 30 i System out println 線(xiàn)程main正在打印 i 線(xiàn)程練習(xí)一 管道流 PipedOuputStream PipeInputStream 方法一 PipedInputStreamin newPipedInputStream PipedOutputStreamout newPipedOutputStream in 方法二 PipedInputStreamin newPipedInputStream PipedOutputStreamout newPipedOutputStream In connect out out connect in 問(wèn)題 要定義的線(xiàn)程類(lèi)已經(jīng)顯式繼承了一個(gè)其他的類(lèi)怎么辦 方法二 創(chuàng)建Runnable接口的實(shí)現(xiàn)類(lèi) 創(chuàng)建類(lèi)實(shí)現(xiàn)接口classclassnameimplementsRunnable voidrun 創(chuàng)建該類(lèi)對(duì)象 不是線(xiàn)程對(duì)象 還要借助Thread類(lèi) Thread 該類(lèi)對(duì)象 啟動(dòng)線(xiàn)程start classMyRunnableimplementsRunnable publicvoidrun for inti 1 i 30 i System out println 線(xiàn)程 Thread currentThread getName 正在打印 i publicstaticvoidmain String args System out println main開(kāi)始執(zhí)行 MyRunnablemr newMyRunnable Threadt newThread mr t start for inti 1 i 30 i System out println 線(xiàn)程main正在打印 i run不可以調(diào)用 start啟動(dòng)線(xiàn)程 JVM自動(dòng)執(zhí)行run classMyRunnableimplementsRunnable publicvoidrun for inti 1 i 30 i System out println 線(xiàn)程 Thread currentThread getName 正在打印 i publicstaticvoidmain String args System out println main開(kāi)始執(zhí)行 MyRunnablemr newMyRunnable Threadt newThread mr t run for inti 1 i 30 i System out println 線(xiàn)程main正在打印 i 4 線(xiàn)程的 一生 線(xiàn)程的 一生 有幾個(gè)階段 1 創(chuàng)建 線(xiàn)程對(duì)象生成 2 就緒 start 啟動(dòng) 等待運(yùn)行 3 運(yùn)行 CPU運(yùn)行run 代碼 4 阻塞 運(yùn)行過(guò)程中因?yàn)槟撤N原因 讓出CPU 5 死亡 運(yùn)行完畢 線(xiàn)程結(jié)束 或拋出異常退出 造成 阻塞 的原因 1 yield 主動(dòng)出讓CPU 2 sleep 累了 休息一下 3 join 合并線(xiàn)程 暫停 4 I O操作 進(jìn)行數(shù)據(jù)輸出 暫停代碼運(yùn)行結(jié)束阻塞 1 休眠結(jié)束 2 join 執(zhí)行完 3 輸入 出操作執(zhí)行完 4 調(diào)用Interrupt 打斷休眠 Thread類(lèi)提供了獲取和設(shè)置線(xiàn)程優(yōu)先級(jí)的方法getPriority 獲取當(dāng)前線(xiàn)程的優(yōu)先級(jí)setPriority 設(shè)置當(dāng)前線(xiàn)程的優(yōu)先級(jí)Java語(yǔ)言為線(xiàn)程類(lèi)設(shè)置了10個(gè)優(yōu)先級(jí) 分別使用1 10內(nèi)的整數(shù)表示 整數(shù)值越大代表優(yōu)先級(jí)越高 每個(gè)線(xiàn)程都有一個(gè)默認(rèn)的優(yōu)先級(jí) 主線(xiàn)程的默認(rèn)優(yōu)先級(jí)是5 Thread類(lèi)定義的三個(gè)常量分別代表了幾個(gè)常用的優(yōu)先級(jí) MAX PRIORITY 代表了最高優(yōu)先級(jí)10MIN PRIORITY 代表了最低優(yōu)先級(jí)1NORM PRIORITY 代表了正常優(yōu)先級(jí)5 5 線(xiàn)程的優(yōu)先級(jí) classMyThreadextendsThread publicvoidrun for inti 1 i 30 i System out println 線(xiàn)程 Thread currentThread getName 正在打印 i classThreadTest publicstaticvoidmain String args System out println Thread currentThread getPriority MyThreadmt1 newMyThread MyThreadmt2 newMyThread MyThreadmt3 newMyThread mt1 setPriority MIN PRIORITY mt3 setPriority MAX PRIORITY mt1 start mt2 start mt3 start 線(xiàn)程間 共享 數(shù)據(jù)產(chǎn)生的問(wèn)題實(shí)例 銀行的一個(gè)賬戶(hù) Bankbank newBank 0001 2000 兩張卡 線(xiàn)程 Operation 1 bank 1200 start Operation 2 bank 1200 start 6 線(xiàn)程的同步 0001 2000 產(chǎn)生這種問(wèn)題的原因是對(duì)共享資源訪(fǎng)問(wèn)的不完整 為了解決這種問(wèn)題 需要尋找一種機(jī)制來(lái)保證對(duì)共享數(shù)據(jù)操作的完整性 這種完整性稱(chēng)為共享數(shù)據(jù)操作的同步 在Java語(yǔ)言中 引入了 對(duì)象互斥鎖 的概念 對(duì)象互斥鎖 阻止多個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)同一個(gè)變量 在Java語(yǔ)言中 對(duì)象互斥鎖 的實(shí)現(xiàn) 用關(guān)鍵字synchronized來(lái)聲明一個(gè)操作共享數(shù)據(jù)的方法或一段代碼 Java對(duì)象鎖 用synchronized來(lái)標(biāo)識(shí)的代碼段或方法即為 對(duì)象互斥鎖 鎖住的部分 如果一個(gè)程序內(nèi)有兩個(gè)或以上的方法使用synchronized標(biāo)志 則它們?cè)谕粋€(gè) 對(duì)象互斥鎖 管理之下 使用 synchronized 關(guān)鍵字 1修飾方法被 synchronized 關(guān)鍵字修飾的方法稱(chēng)為 同步方法 當(dāng)一個(gè)線(xiàn)程訪(fǎng)問(wèn)對(duì)象的同步方法時(shí) 被訪(fǎng)問(wèn)對(duì)象就處于 鎖定 狀態(tài) 訪(fǎng)問(wèn)該方法的其他線(xiàn)程只能等待 對(duì)象中的其他同步方法也不能訪(fǎng)問(wèn) 但非同步方法則可以訪(fǎng)問(wèn) 使用 synchronized 關(guān)鍵字 2修飾部分代碼如果只希望同步部分代碼行 可以使用 同步塊 同步塊的作用與同步方法一樣 只是控制范圍有所區(qū)別 在多線(xiàn)程應(yīng)用程序中 obj代表被鎖定的共享對(duì)象

注意事項(xiàng)

本文(Java程序設(shè)計(jì)實(shí)例教程-第8章.ppt)為本站會(huì)員(max****ui)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!