版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章注解和多線程第一單元第1頁/共33頁本章相關(guān)學(xué)習(xí)資源《注解》專題《多線程處理》專題《使用Java高級實用技術(shù)》第4章《注解和多線程》學(xué)習(xí)平臺“Java高級特性”課程學(xué)生用書第2頁/共33頁預(yù)習(xí)檢查注解有哪幾類?讀取注解信息使用哪個接口?線程的生命周期包括哪幾個狀態(tài)?線程同步的方式有哪兩個?關(guān)鍵字是什么?提問第3頁/共33頁本章任務(wù)使用注解描述程序代碼使用多線程輸出1~100的整數(shù)使用線程同步實現(xiàn)銀行取款通過線程間通信解決生產(chǎn)消費者問題第4頁/共33頁會使用內(nèi)建注解和自定義注解會讀取注解信息實現(xiàn)線程同步實現(xiàn)線程調(diào)度本章目標(biāo)創(chuàng)建和啟動線程點重理解注解和線程的概念點難實現(xiàn)線程通信點難點難第5頁/共33頁點重講解:注解AnnotationinJDK5.0---將元數(shù)據(jù)引入Java元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)元數(shù)據(jù)的用處:文檔編制、編譯器檢查、代碼分析等元數(shù)據(jù)Java注解:Java代碼里的特殊標(biāo)記。它為在代碼中添加用Java程序無法表達(dá)的額外信息提供了一種形式化的方法。注釋不會被程序所讀取注解可以在編譯、類加載、運行時被讀取注釋注解第6頁/共33頁串講:注解的分類內(nèi)建注解元注解自定義注解三類注解標(biāo)準(zhǔn)注解類型,如:@Override、@SuppressWarnings修飾其他的注解定義,如:@Target、@Retention注解類型是一種接口使用關(guān)鍵字@interface定義第7頁/共33頁串講:內(nèi)建注解標(biāo)準(zhǔn)注解類型(位于java.lang包下)限定重寫父類方法:@Override標(biāo)示已過時:@Deprecated抑制編譯器警告:@SuppressWarnings@DeprecatedpublicvoidgetObjectInfo(){System.out.println("蘋果重寫水果的getObjectInfo方法");}publicclassFruit{publicvoidgetObjectInfo(){…}}publicclassAppleextendsFruit{@OverridepublicvoidgetObjectInfo(){…}}使用@Override指定下面的方法是重寫父類方法第8頁/共33頁使用@Deprecated指定下面的方法已過時串講:內(nèi)建注解標(biāo)準(zhǔn)注解類型抑制編譯器警告:@SuppressWarnings帶一個參數(shù):@注解名(value="值")帶多個參數(shù):@注解名(value="值","值",…)@SuppressWarnings可以修飾類、方法、語句@SuppressWarnings(value="unchecked");publicclassFruit{……}使用@SuppressWarnings抑制編譯器警告信息參數(shù)“unchecked”表示:執(zhí)行了未檢查的轉(zhuǎn)換第9頁/共33頁上機練習(xí)需求說明定義Person類,包含姓名屬性(name)和打招呼的方法(sayHi())。其中name屬性標(biāo)識為已過時定義學(xué)生類(Student)繼承Person類,使用注解限定重寫sayHi()方法在main()方法中實例化兩個學(xué)生對象,并使用注解抑制對象未使用的編譯器警告信息完成時間:10分鐘共性問題集中講解練習(xí)第10頁/共33頁串講:元注解四個元注解類型@Target指定被其修飾的注解能用于修飾哪些程序元素成員變量value為ElementType枚舉類型@Retention指定該注解可使用反射讀取成員變量value:RetentionPolicy枚舉類型@Documented指定被其修飾的注解將被JavaDoc工具提取成文檔@Inherited指定被其修飾的注解將具有繼承性第11頁/共33頁串講:自定義注解自定義注解使用@interface關(guān)鍵字聲明注解也可以帶成員變量public@interfaceAnnotationTest1{}public@interfaceAnnotationTest2{StringtypeCon();}注解中以無參數(shù)方法的形式來聲明成員變量public@interfaceDataBaseType3{ StringtypeConn()default"SQL";}使用default關(guān)鍵字為注解類型的成員變量指定初始值@Target(METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceDataBaseType3{ StringtypeConn()default"SQL";}使用元數(shù)據(jù)注解@Target來指定該注解僅作用于方法使用元數(shù)據(jù)注解@Retention來指定該注解可使用反射讀取第12頁/共33頁串講:使用自定義注解使用注解默認(rèn)情況下,注解可用于修飾任何程序元素,如類、接口、方法和成員變量等規(guī)范注解單獨放在一行注解放在所有修飾符之前@AnnotationTest1publicclassMyAnnotation{...}@AnnotationTest2publicclassMyAnnotation{...}@AnnotationTest2(type=“oracle”)publicclassMyAnnotation{...}@AnnotationTest3publicclassMyAnnotation{...}使用默認(rèn)值注解修飾類第13頁/共33頁串講:讀取注解信息java.lang.reflect.AnnotatedElement接口指定了程序中可以接受注解的程序元素讀取注解信息的方法getAnnotation(Class<T>annotationClass)返回該程序元素上存在的、指定類型的注解,如果該類型的注解不存在,則返回nullAnnotation[]getAnnotations()返回該程序元素上存在的所有注解@Retention注解的value成員變量的值設(shè)為RetentionPolicy.RUNTIME演示示例:自定義注解和讀取注解信息第14頁/共33頁上機練習(xí)需求說明自定義注解,只能修飾方法,包含一個成員變量age,有默認(rèn)值20定義Person類,包含驗證年齡的方法,使用自定義注解修飾,在此方法中讀取注解中的年齡信息并進(jìn)行判斷,如果年齡在18歲以下,提示“未成年”,否則,提示“具備選舉權(quán)”定義測試類完成時間:10分鐘共性問題集中講解練習(xí)第15頁/共33頁小結(jié)內(nèi)建注解包含哪幾個?作用分別是什么?自定義注解的語法是什么?讀取注解信息使用的接口和方法是什么?提問第16頁/共33頁講解:進(jìn)程與線程系統(tǒng)運行程序的基本單位有獨立的內(nèi)存空間和系統(tǒng)資源進(jìn)程進(jìn)程中執(zhí)行運算的最小單位處理機分配給線程,即真正在處理機上運行的是線程線程第17頁/共33頁串講:線程的創(chuàng)建和啟動在Java中創(chuàng)建線程的兩種方式繼承java.lang.Thread類實現(xiàn)java.lang.Runnable接口使用線程的步驟1.定義線程2.創(chuàng)建線程對象3.啟動線程4.終止線程第18頁/共33頁上機練習(xí)需求說明創(chuàng)建線程,輸出1~100之間的偶數(shù)。要求使用兩種方式創(chuàng)建線程分析繼承java.lang.Thread類實現(xiàn)java.lang.Runnable接口完成時間:15分鐘共性問題集中講解練習(xí)第19頁/共33頁講解:線程的狀態(tài)線程的生命周期包括四個狀態(tài):新生狀態(tài)、可運行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)第20頁/共33頁講解:線程調(diào)度多個線程處于可運行狀態(tài)分配優(yōu)先級:反映線程的重要或緊急程度線程的優(yōu)先級用1~10表示,1的優(yōu)先級最高,默認(rèn)值是5更改優(yōu)先級setPriority(intgrade)方法myThread.setPriority(3);線程調(diào)度的方法join()方法sleep()方法yield()方法第21頁/共33頁講解:線程調(diào)度—join()方法使用join()方法調(diào)度線程publicfinalvoidjoin();publicfinalvoidjoin(longmills);publicfinalvoidjoin(longmills,intnanos);語法阻塞指定的線程等到另一個線程完成以后再繼續(xù)執(zhí)行演示示例:使用join()方法調(diào)度線程第22頁/共33頁講解:線程調(diào)度—sleep()方法使用sleep()方法調(diào)度線程publicstaticvoidsleep(long
millis);當(dāng)前線程在指定毫秒內(nèi)停止執(zhí)行而轉(zhuǎn)入不可運行狀態(tài)publicvoidrun(){for(inti=0;i<5;i++){ ……}try{
Thread.sleep(10000);//等待10秒}catch(InterruptedExceptione){e.printStackTrace();}}演示示例:使用sleep()方法調(diào)度線程第23頁/共33頁講解:線程調(diào)度—yield()方法使用yield()方法調(diào)度線程publicstaticvoidyield();當(dāng)前線程轉(zhuǎn)入暫時停止運行的狀態(tài)sleep()與yield()的區(qū)別sleep()yield()使當(dāng)前線程進(jìn)入被阻塞的狀態(tài)將當(dāng)前線程轉(zhuǎn)入暫停執(zhí)行的狀態(tài)即使沒有其他等待運行的線程,當(dāng)前線程也會等待指定的時間如果沒有其他等待執(zhí)行的線程,當(dāng)前線程會馬上恢復(fù)執(zhí)行其他等待執(zhí)行的線程的機會是均等的會將優(yōu)先級相同或更高的線程運行演示示例:使用yield()方法調(diào)度線程第24頁/共33頁上機練習(xí)需求說明定義一個線程A,輸出1~10之間的整數(shù),定義一個線程B,逆序輸出1~10之間的整數(shù),要求線程A和線程B交替輸出分析使用sleep()方法阻塞當(dāng)前線程完成時間:10分鐘共性問題集中講解練習(xí)第25頁/共33頁串講:線程同步線程同步當(dāng)兩個或多個線程需要訪問同一資源時,需要以某種順序來確保該資源某一時刻只能被一個線程使用1同步方法(synchronized)2同步代碼塊(synchronized)如何實現(xiàn)線程同步?提問演示示例:實現(xiàn)線程同步第26頁/共33頁上機練習(xí)需求說明張三和妻子各擁有一張銀行卡和存折,可以對同一個銀行賬戶進(jìn)行存取款的操作,請使用多線程及同步方法模擬張三和妻子同時取款的過程。要求使用同步方法和同步代碼塊兩種方式實現(xiàn)分析定義Account類表示銀行帳戶定義兩個線程分別實現(xiàn)張三和妻子取款的操作完成時間:15分鐘共性問題集中講解練習(xí)第27頁/共33頁串講:線程通信方法Java實現(xiàn)線程通信的方法wait()方法掛起當(dāng)前線程,并釋放共享資源的鎖notify()方法在因調(diào)用該對象的wait()方法而阻塞的線程中隨機選擇一個解除阻塞,但要等到獲得鎖后才可真正執(zhí)行notifyAll()方法將因調(diào)用該對象的wait()方法而阻塞的所有線程一次性全部解除阻塞這三個方法只能在同步方法或者同步代碼塊中使用演示示例:實現(xiàn)線程通信第28頁/共33頁上機練習(xí)需求說明使用線程通信解決生產(chǎn)消費者問題分析定義共享資源類定義生產(chǎn)者線程類定義消費者線程類完成時間:20分鐘共性問題集中講解練習(xí)第29頁/共33頁答疑時間同學(xué)們請就以下方面的問題請教老師(教員備課時自行填寫)第30頁/共33頁總結(jié)簡述三個內(nèi)建注解的作用。定義注解的成員變量的
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分析儀器在液體食品質(zhì)量分析的應(yīng)用考核試卷
- 專業(yè)知識的學(xué)習(xí)與價值創(chuàng)造考核試卷
- 合成革的綠色生產(chǎn)與品牌建設(shè)考核試卷
- ??漆t(yī)院護(hù)理志愿者服務(wù)管理知識考核試卷
- 辦公室項目管理進(jìn)度控制考核試卷
- 印刷設(shè)備智能化生產(chǎn)計劃的設(shè)計考核試卷
- 食品創(chuàng)新與創(chuàng)意課程設(shè)計
- 機械制造課程設(shè)計緒論
- 鄭州環(huán)境監(jiān)測課程設(shè)計
- 身邊的科學(xué)主題課程設(shè)計
- 2024年采購代發(fā)貨合作協(xié)議范本
- 2024年業(yè)績換取股權(quán)的協(xié)議書模板
- 顳下頜關(guān)節(jié)疾病(口腔頜面外科學(xué)課件)
- 工業(yè)自動化設(shè)備維護(hù)保養(yǎng)指南
- 2024人教新版七年級上冊英語單詞英譯漢默寫表
- 《向心力》參考課件4
- 2024至2030年中國膨潤土行業(yè)投資戰(zhàn)略分析及發(fā)展前景研究報告
- 2024年深圳中考數(shù)學(xué)真題及答案
- 土方轉(zhuǎn)運合同協(xié)議書
- Module 3 Unit 1 Point to the door(教學(xué)設(shè)計)-2024-2025學(xué)年外研版(三起)英語三年級上冊
- 智能交通信號燈安裝合同樣本
評論
0/150
提交評論