版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄第一章Java與程序邏輯第二章面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)第三章面向?qū)ο蠡咎匦缘谒恼鲁S脤?duì)象使用第五章異常處理第六章I/O操作第七章多線程編程第八章Java的GUI可視界面編程第七章多線程編程21任務(wù)7.1創(chuàng)建多線程程序任務(wù)7.2多線程程序的同步任務(wù)7.1創(chuàng)建多線程程序4情境描述123問(wèn)題分析解決方案知識(shí)總結(jié)5應(yīng)用實(shí)踐7.1.1情境描述為了提高大家的工作積極性,人事部門(mén)覺(jué)得在工資管理系統(tǒng)中增加情趣模塊,為大家業(yè)余時(shí)間提供娛樂(lè),在規(guī)定的時(shí)間內(nèi)猜數(shù)字,通過(guò)猜中數(shù)字個(gè)數(shù)的高低來(lái)進(jìn)行排名,此游戲?yàn)榇蠹姨峁┝朔潘傻目臻g。為了完成猜數(shù)字游戲的核心功能,需要完成以下任務(wù):1)多線程編程2)Java網(wǎng)絡(luò)編程技術(shù)7.1.2問(wèn)題分析猜數(shù)字游戲主要是通過(guò)服務(wù)器隨機(jī)產(chǎn)生一個(gè)數(shù),客戶端用戶通過(guò)猜一個(gè)數(shù)字,通過(guò)提示用戶猜的數(shù)的大小給出猜得過(guò)大或者過(guò)小提醒用戶,用戶根據(jù)提醒再次猜新的數(shù),最終達(dá)到猜中的目的。在給定的時(shí)間內(nèi),猜的數(shù)字個(gè)數(shù)越多,積分越高,本程序主要負(fù)責(zé)完成猜字核心功能,猜字的積分記錄及時(shí)間控制問(wèn)題,在此不涉及。7.1.3解決方案
1、打開(kāi)Eclipse開(kāi)發(fā)環(huán)境。2、創(chuàng)建包c(diǎn)om.esms.thread包。3、在com.esms.thread包下創(chuàng)建類ServerApp,負(fù)責(zé)服務(wù)端程序。4、編寫(xiě)客戶端用戶猜字程序ClientApp.java。5、運(yùn)行服務(wù)器端。6、運(yùn)行客戶端,進(jìn)行猜字操作。7.1.4知識(shí)總結(jié)1.多線程概念線程是比進(jìn)程更小的執(zhí)行單位。一個(gè)進(jìn)程在其執(zhí)行過(guò)程中可以產(chǎn)生多個(gè)線程,形成多條執(zhí)行線索。從運(yùn)行角度看,每個(gè)線程也有其產(chǎn)生、存在和消亡的過(guò)程,也是一個(gè)動(dòng)態(tài)的概念。多任務(wù)和多線程是兩個(gè)不同的概念,多任務(wù)是指多進(jìn)程,是指一個(gè)操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)程序,即啟動(dòng)多個(gè)進(jìn)程;而多線程是指一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程來(lái)執(zhí)行不同的任務(wù),每個(gè)線程都是該程序內(nèi)部的一個(gè)可執(zhí)行代碼序列。7.1.4知識(shí)總結(jié)2.Java多線程技術(shù)Java語(yǔ)言中定義的線程同樣包括一個(gè)內(nèi)存入口點(diǎn)地址、一個(gè)出口點(diǎn)地址以及能夠順序執(zhí)行的代碼序列,可以說(shuō)線程就是程序內(nèi)部的具有并發(fā)性的順序代碼流。Java語(yǔ)言中,線程通過(guò)java.lang.Thread類來(lái)實(shí)現(xiàn),在該類中封裝了虛擬的CPU來(lái)進(jìn)行線程操作控制。一個(gè)Java程序啟動(dòng)后,就已經(jīng)有一個(gè)線程在運(yùn)行,可以通過(guò)調(diào)用Thread.currentThread()來(lái)查看當(dāng)前運(yùn)行的是哪個(gè)線程。7.1.4知識(shí)總結(jié)3.線程的創(chuàng)建線程的所有活動(dòng)都是通過(guò)線程體run()方法來(lái)實(shí)現(xiàn)的。(1)通過(guò)繼承Thread類創(chuàng)建線程多線程的實(shí)現(xiàn)步驟如下:將需要實(shí)現(xiàn)多線程的類聲明為繼承Thread類,覆蓋其run()方法,并將線程體放在該方法里。創(chuàng)建一個(gè)該類的實(shí)例。啟動(dòng)該實(shí)例。通過(guò)start()方法啟動(dòng)線程的執(zhí)行,start()方法是在Thread類中聲明的。7.1.4知識(shí)總結(jié)3.線程的創(chuàng)建線程的所有活動(dòng)都是通過(guò)線程體run()方法來(lái)實(shí)現(xiàn)的。(2)通過(guò)Runnable接口創(chuàng)建線程通過(guò)Runnable接口創(chuàng)建線程的基本步驟如下:①將需要實(shí)現(xiàn)多線程的類聲明為實(shí)現(xiàn)Runnable接口的類,實(shí)現(xiàn)run()方法,并將線程體放在該方法里。②創(chuàng)建一個(gè)該類的實(shí)例。③從該實(shí)例中創(chuàng)建一個(gè)Thread實(shí)例。④啟動(dòng)該Thread的實(shí)例。7.1.5應(yīng)用實(shí)踐模擬銀行中的會(huì)計(jì)和出納。兩個(gè)線程:accounting和cashier,使用同一個(gè)目標(biāo)對(duì)象,共享目標(biāo)對(duì)象的money。當(dāng)money值小于150時(shí),線程accounting結(jié)束自己的run()方法進(jìn)入死亡狀態(tài);當(dāng)money值小于0時(shí),線程cashier結(jié)束自己的run()方法進(jìn)入死亡狀態(tài)。任務(wù)7.2多線程程序的同步4情境描述123問(wèn)題分析解決方案知識(shí)總結(jié)5應(yīng)用實(shí)踐7.2.1情境描述多個(gè)線程的運(yùn)行往往存在競(jìng)爭(zhēng)資源的問(wèn)題,競(jìng)爭(zhēng)過(guò)程中時(shí)常存在沖突,為了解決沖突,采取多線程的同步機(jī)制能解決問(wèn)題。為了完成線程同步,需要完成以下任務(wù):1)方法同步機(jī)制2)多線程編程技術(shù)7.2.2問(wèn)題分析生產(chǎn)者與消費(fèi)者問(wèn)題在于他們共享同一資源,當(dāng)生產(chǎn)者生產(chǎn)過(guò)程中,消費(fèi)者無(wú)法獲取資源,因此,生產(chǎn)者鎖定了資源的訪問(wèn)。消費(fèi)者消費(fèi)資源時(shí),生產(chǎn)者停止生產(chǎn)。Java語(yǔ)言采取synchronized關(guān)鍵字實(shí)現(xiàn)同步控制。7.2.3解決方案
1、打開(kāi)Eclipse。2、在com.esms.thread包下建立BufferLock類,用于共享資源的同步互斥操作。3、在com.esms.thread下建立生產(chǎn)者Producer類,實(shí)現(xiàn)生產(chǎn)者生產(chǎn)資源。4、在com.esms.thread下建立消費(fèi)者Customer類,實(shí)現(xiàn)消費(fèi)者消費(fèi)資源。5、運(yùn)行程序,測(cè)試生產(chǎn)者與消費(fèi)者同步。7.2.4知識(shí)總結(jié)1.線程的生命周期一個(gè)線程從它創(chuàng)建到消亡的生命周期大致可分為5個(gè)狀態(tài):新建狀態(tài)、可運(yùn)行狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)、消亡狀態(tài)。它們之間的狀態(tài)關(guān)系如圖所示??蛇\(yùn)行狀態(tài)(Runnable)新建狀態(tài)(New)阻塞狀態(tài)(Blocked)運(yùn)行狀態(tài)(Running)消亡狀態(tài)(Dead)start()系統(tǒng)調(diào)度阻塞事件解除阻塞run()結(jié)束7.2.4知識(shí)總結(jié)2.線程的優(yōu)先級(jí)存在多個(gè)線程時(shí),可以通過(guò)設(shè)置線程的優(yōu)先級(jí)來(lái)決定哪個(gè)線程能夠得到更多的執(zhí)行機(jī)會(huì)。每個(gè)Java線程的優(yōu)先級(jí)是1~10之間的正整數(shù)。1代表最小的優(yōu)先級(jí),10代表最大優(yōu)先級(jí)。線程的默認(rèn)優(yōu)先級(jí)是5。7.2.4知識(shí)總結(jié)3.線程的同步控制(1)同步控制與互斥鎖Java語(yǔ)言中,為了保證線程對(duì)共享資源操作的完整性,用關(guān)鍵字synchronized為共享資源加鎖來(lái)解決。(2)生產(chǎn)者與消費(fèi)者兩個(gè)線程需要在以下兩個(gè)方面進(jìn)行同步:兩個(gè)線程不能同時(shí)訪問(wèn)存儲(chǔ)數(shù)據(jù)的對(duì)象。兩個(gè)線程必須相互協(xié)作,生產(chǎn)者生產(chǎn)數(shù)據(jù)以后,要告訴消費(fèi)者數(shù)據(jù)已準(zhǔn)備好,可以取數(shù)據(jù),生產(chǎn)者等待消費(fèi)者取走數(shù)據(jù)。消費(fèi)者取走數(shù)據(jù)后,要告訴生產(chǎn)者已取走數(shù)據(jù),可以生產(chǎn)新數(shù)據(jù)。這需要調(diào)用wait()、notify()和notifyAll()方法來(lái)實(shí)現(xiàn)。7.2.4知識(shí)總結(jié)3.線程的同步控制加入wait和notify后的線程的生命周期狀態(tài)圖如圖所示。新建狀態(tài)(New)可運(yùn)行狀態(tài)(Runnable)阻塞狀態(tài)(Blocked)運(yùn)行狀態(tài)(Running)消亡狀態(tài)(Dead)解除阻塞等待對(duì)象鎖的隊(duì)列等待滿足條件的線程隊(duì)列阻塞事件系統(tǒng)調(diào)度run()結(jié)束獲得鎖wait()釋放掉所持有的鎖synchronizednotify()/notifyAll()start()7.2.4知識(shí)總結(jié)3.線程的同步控制(3)死鎖問(wèn)題Java語(yǔ)言本身既不能發(fā)現(xiàn)死鎖,也不能預(yù)防死鎖,只能靠程序員謹(jǐn)慎的設(shè)計(jì)來(lái)避免。一般來(lái)說(shuō),如果線程因?yàn)榈却硞€(gè)先決條件而受阻,它應(yīng)該釋放所占的自由,讓其他線程使用。當(dāng)先決條件滿足而恢復(fù)運(yùn)行時(shí),再重新獲得這些資源。7.2.5應(yīng)用實(shí)踐編寫(xiě)一個(gè)Java應(yīng)用程序,模擬銀行系統(tǒng)對(duì)用戶存款和取款的處理過(guò)程。假設(shè)存款人和取款人在同
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年宣化科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)附答案
- 2026年大學(xué)生體育心理考試題庫(kù)及完整答案一套
- 2026年浙江師范大學(xué)單招職業(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年電工學(xué)習(xí)題及答案(網(wǎng)校專用)
- 2026年年重慶單招試題附答案
- 2026年玩轉(zhuǎn)單招測(cè)試題及答案1套
- 2025遼寧葫蘆島市面向退役本科畢業(yè)生士兵招聘事業(yè)單位工作人員100人筆試模擬試題及答案解析
- 2025年蕪宣機(jī)場(chǎng)招聘地面服務(wù)貨運(yùn)員10人筆試備考試題附答案
- 2025年鹽池縣公開(kāi)招聘窗口經(jīng)辦人員和仲裁院書(shū)記員備考題庫(kù)附答案
- 2026福建南平市建陽(yáng)林業(yè)集團(tuán)有限公司招聘2人筆試參考題庫(kù)及答案解析
- 河南省開(kāi)封市2026屆高三年級(jí)第一次質(zhì)量檢測(cè)歷史試題卷+答案
- 員工通勤安全培訓(xùn)課件
- (自2026年1月1日起施行)《增值稅法實(shí)施條例》的重要變化解讀
- 2025年游戲陪玩分成協(xié)議
- 全國(guó)秸稈綜合利用重點(diǎn)縣秸稈還田監(jiān)測(cè)工作方案
- 2026年內(nèi)蒙古化工職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試參考題庫(kù)及答案解析
- 國(guó)家事業(yè)單位招聘2024國(guó)家水利部小浪底水利樞紐管理中心招聘事業(yè)單位人員擬聘用人員筆試歷年參考題庫(kù)典型考點(diǎn)附帶答案詳解(3卷合一)
- 核生化應(yīng)急救援中心火災(zāi)預(yù)案
- 25數(shù)五上數(shù)學(xué)人教版期末押題卷5套
- 2026年遼寧金融職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案詳解
- 2026年教師資格之中學(xué)綜合素質(zhì)考試題庫(kù)500道及完整答案【名師系列】
評(píng)論
0/150
提交評(píng)論