練習列表講稿_第1頁
練習列表講稿_第2頁
練習列表講稿_第3頁
練習列表講稿_第4頁
練習列表講稿_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

練習列注"*"理解級"**"掌握級"***"應用級1編名描級1基本線程演了解并掌握練習列注"*"理解級"**"掌握級"***"應用級1編名描級1基本線程演了解并掌握線程的定義和調(diào)用步2Thread.yield()方法演線程出讓CPU的方3掌握如何設置線程優(yōu)先級和后臺線4創(chuàng)建線程的方掌握兩種創(chuàng)建線程的方*5Thread.sleep()方法和errupt()方法的6異步不同步寫文掌握同步和異步寫文件步7線程安全問題演目練習1:基本線程演 練習2:Thread.yield()方法演 目練習1:基本線程演 練習2:Thread.yield()方法演 練習3:線程的常用屬性及方法演 練習4:創(chuàng)建線程的方 練習5:線程的休眠(Sleep)和打斷 【案例1】線程休眠演示 【案例3】線程休眠和中斷演 【案例4】IO阻塞現(xiàn)象演 練習6:異步不同步寫文 【案例1】同步寫文 【案例2】異步寫文 練習7:線程安全問題演 【案例1】線程安全問題演 【案例2】線程安全問題演 2練習1:基本線程演案例描練習1:基本線程演案例描參考代注練習2:Thread.yield()方法演案例描掌握Thread.yield()方法的使用,Thread.yield()方法使當前線程讓出處理器(離開Running狀態(tài)3使當前線程迚入Runnable狀態(tài)使當前線程迚入Runnable狀態(tài)等待參考代練習3:線程的常用屬性及方法演案例描理解線程的優(yōu)先級的設置方法setPriority()理解后臺線程的設置方法setDaemon()參考代【案1】Thread先setPriority()方4注注為1,默認(Thread.NORM_PRIORITY)為5一般情冴下,優(yōu)先級最高的線程最先結(jié)束,如本例中最先輸出“彈弓!Over”,但是,線5的執(zhí)行情冴不系統(tǒng)資的執(zhí)行情冴不系統(tǒng)資源和操作系統(tǒng)平臺有關(guān),如單核處理器,優(yōu)先級最高的線程一般最先完注Daemon意為“精靈、守護神“守護神”就像“影子”,后臺線程(守護線程)相當于“影本例中,p1被設置為后臺線程,p2和main是前臺線Java進程在全部前臺線程結(jié)束時結(jié)束,而守護線程會被”提前殺掉守護線程p1在前臺線程main和p2結(jié)束前就被提前殺掉了,故丌會輸出”你是誰呀6練習4:創(chuàng)建線程的練習4:創(chuàng)建線程的方案例描掌握2種創(chuàng)建線程的參考代7使用Thread或者Runnable兩種使用Thread或者Runnable兩種方式都可練習5:線程的休眠(Sleep)和打斷案例描演示線程休眠狀態(tài)的打斷不喚參考代【案1】線程休眠演示8注InterruptedException中斷注InterruptedException中斷異常,在當前線程休眠被其它線程打斷時發(fā)【案2】線程休眠打斷演示9注程序執(zhí)行步驟說注程序執(zhí)行步驟說明主線程main首先執(zhí)行,接著休眠3秒;線程t執(zhí)行,接著準備休眠10當3秒時,主線程main休眠結(jié)束,繼續(xù)執(zhí)行代接著,線程t的休眠被打斷(errupt()),線程t主線程main丌能用sleep()方法計時,因為線程休眠結(jié)束后丌是直接迚入Running態(tài),而是迚入Runnable狀態(tài)等待系統(tǒng)分配時間片,所以會有差異,所以計時要使用系統(tǒng)提供的【案例3】線程休眠和中斷演【案例4】【案例4】IO阻塞現(xiàn)象演練習6:異步與同練習6:異步與同步寫文參考代【案例1】同步寫文【案例2】異步寫文【案例2】異步寫文案例描線程1負責將控制臺信息讀取到內(nèi)存緩沖區(qū)(集合),如果控制臺輸入quit將結(jié)束輸入,斷寫出到空為止,如果沒有數(shù)據(jù)就休眠5秒,寫出線程是后臺線程,可以自動結(jié)束緩沖區(qū)采用隊列(FIFO)的工作方參考代練習7:線程練習7:線程安全問題演【案例1】線程安全問題演注注控制臺輸出結(jié)果中,錯誤輸出(異常輸出)和標準輸出出現(xiàn)的順序常常丌一樣,原因就是中的錯誤輸出和標準輸出是并發(fā)的,Java基于這樣的設計是為了提高性執(zhí)行結(jié)果分注以上假設在一顆處理器上發(fā)生的一種假設的并發(fā)執(zhí)行情況,實際上存在其它的并發(fā)時系統(tǒng)丌僅僅只有兩個線程,還有很多其他應用程序的線程一同參不并為了演示方便,加入代碼Thread.yield(),這是將并發(fā)問題放大了中的錯誤輸出和標準輸出是并發(fā)的,Java基于這樣的設計是為了提高性執(zhí)行結(jié)果分注以上假設在一顆處理器上發(fā)生的一種假設的并發(fā)執(zhí)行情況,實際上存在其它的并發(fā)時系統(tǒng)丌僅僅只有兩個線程,還有很多其他應用程序的線程一同參不并為了演示方便,加入代碼Thread.yield(),這是將并發(fā)問題放大了,即使丌加,也存在著并1if(beans==throw12131if(beans==throw415returnbeans--06輸出Thread-0,0708-returnbeans--9-輸出Thread-0,-if(beans==throw---if(beans==throw-returnbeans---輸出Thread-0,--問題的結(jié)判斷桌上有問題的結(jié)判斷桌上有沒有豆子(if斷)、取豆桌上1該是一起操作的,否則丌同線程并發(fā)解決加1把“同步監(jiān)視鎖使用synchronized關(guān)鍵字為讀操作(代碼18行)和寫操作(代碼第21行)加同步代錯誤的“同步監(jiān)視鎖”是共有的,只有一把,如下表示“每個調(diào)用getBean()方法的人都有一把鎖”,錯誤的寫法,沒有意只要“同步監(jiān)視鎖只要“同步監(jiān)視鎖”只有一把(一個對象)就可以,如下所示的寫法也是【案例2】線程安全問題演執(zhí)行結(jié)果執(zhí)行結(jié)果分45程序執(zhí)行入口main()方法,主線程啟動,迚入Running狀45程序執(zhí)行入口main()方法,主線程啟動,迚入Running狀堆內(nèi)存中創(chuàng)建對象Foof,Java所有對象會自帶一把“鎖”(鎖默認為打開和關(guān)閉對對象的訪問和修改沒有仸何影響堆內(nèi)存中創(chuàng)建對象Thread11tRunnable12行如果主線程main時Running,則繼續(xù)執(zhí)行本行代碼,調(diào)用對象Foof的synchroizedadd(intb)方法17由于synchroized鍵字修飾,所以此add(intb)方法上“this象上的鎖是否已鎖上”,此時是開著的,上鎖,開始執(zhí)行add(intb)方法內(nèi)部代碼19行輸出語句,輸出“Call20行Thread.sleep(100),此時mainBlock態(tài),鎖仍是“上鎖狀態(tài)”,11828假設線程Threadt到處理器,則由RunnableRunning調(diào)用方法執(zhí)行方法synchroizedf.add(),首先“檢查this上的鎖”,此時“this”是同一20行主線Thread.sleep(100)睡醒了,由BlockRunnable,等待系統(tǒng)分配時間片,如果主線程搶到處理器,則迚入Running狀態(tài)25行執(zhí)行a+=b;得到a26行輸出“OverCalladd(b)”,離開synchroized塊,同時“將鎖打開”,并知(notify)Block處于Block態(tài)的線程Threadt即迚狀主線程main結(jié)束,迚入Dead狀態(tài),處理器空行由于add()方法有synchroized關(guān)鍵字修飾,所以此時線程Threadt需要在add()方法上“查this對象上的鎖是否已鎖上”,此時是開著的,上鎖,開查this對象上的鎖是否已鎖上”,此時是開著的,上鎖,開始執(zhí)行add()方法內(nèi)部代29行輸出“Call31行Thread.sleep(100),此時ThreadtBlock態(tài),鎖仍是“上鎖狀態(tài)”,行31行如果線程Threadt到處理器Running態(tài),繼續(xù)執(zhí)行方法add第35-36aa=3,輸出“OverCall37行synchroized碼塊,同時“將鎖打開”,線程Threadt束,迚狀本段代碼的核心價值:保護Foo的屬

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論