版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java多線程并發(fā)系統(tǒng)中的安全性與公平性麻孜寧,伊浩,李祥摘耍:多線程MJava的一個(gè)垂耍方法.特別有利干在程序中實(shí)現(xiàn)并發(fā)任務(wù)。Jax提供Thea”程類.實(shí)現(xiàn)紐程的并發(fā)機(jī)制,然而.程序的并發(fā)執(zhí)行必定會(huì)出現(xiàn)多個(gè)線程互斥訪何臨界資源的局面因而并發(fā)系統(tǒng)解決的關(guān)鍵就是對臨界資源的管理和分配問題.而在進(jìn)行臨界資源分配時(shí)有兩方而需要考.電.即安全性和公平性.文中肖先討論了多線程并發(fā)系統(tǒng)中的安全性與公平性何趣.捐出安全性與公平件在井發(fā)系統(tǒng)中訪問臨界資源時(shí)的重耍性.并通過火車行駛單行腿道的實(shí)例.演示各種條件卜的行駛怖況來進(jìn)一步說明該問題.0引言:并發(fā)即多道程序在同一CPU上分時(shí)運(yùn)行,實(shí)現(xiàn)冬個(gè)任務(wù)同時(shí)執(zhí)行。但是系統(tǒng)的并發(fā)執(zhí)行必然會(huì)引起線程在訪何臨界資源時(shí)沖突的產(chǎn)生.即多個(gè)線程同一時(shí)刻申請?jiān)L問資源。因而并發(fā)系統(tǒng)需杵要解決的就是對臨界資源的管理和分配。然而在進(jìn)行臨界資源分配時(shí)有兩方面需要,考慮.即安全性和公平性。文中通過火車行駛單行隧道的實(shí)例演示….模擬并種借〉兄卜所產(chǎn)生的結(jié)果來進(jìn)一步說明并發(fā)系統(tǒng)中安全性與公平性的重要性,fiillUava中對多線程的并發(fā)控制應(yīng)該做到公平性和安全陛的理想兼容兩方而都不可忽視。1并發(fā)系統(tǒng)的概念:并發(fā)f通俗地講.就是在某一時(shí)段同時(shí)發(fā)生幾件事的現(xiàn)象.這是生活中很常見的。但是在計(jì)越機(jī)系統(tǒng)中.并發(fā)是相對于多道程序分時(shí)地運(yùn)行在同i個(gè)CPU上而言的。如果在單CPU下同時(shí)運(yùn)行幾道程序.那么在宏觀上這幾道程序 是同時(shí)向前推進(jìn),但從微觀上觀察.則是由單CPI:按照時(shí)何片輪流執(zhí)行每個(gè)程序的一小部分代碼,使每個(gè)程序都運(yùn)行到程序的開始與結(jié)束之間的某一處。從邏輸上講.這幾道程序都在運(yùn)行■但從CPU的執(zhí)行軌跡上觀跖卻是輪地為每個(gè)程序執(zhí)行一段時(shí)間.循環(huán)往宜.宜到所有程序依次完成。目前使用的訃算機(jī)幾乎都是笊的機(jī)器.但是都能同時(shí)完成幾件不同的工作,就是岡為采用YCPU分時(shí)原理.因此邏2白上的并行稱之為〃并發(fā)為了握高系統(tǒng)的吞葉實(shí)現(xiàn)多個(gè)任務(wù)同時(shí)執(zhí)行,在20世紀(jì)60年代捉出了進(jìn)程的概念.每個(gè)進(jìn)程代表一個(gè)獨(dú)立的任是系統(tǒng)可以進(jìn)行分配調(diào)度的基木爪位。到80年代中期.人們又提出「比進(jìn)程更小的能獨(dú)立運(yùn)行的基木單位一一線程13.用它來提高系統(tǒng)內(nèi)程序并發(fā)執(zhí)行的速度.從而可進(jìn)一步提高系統(tǒng)的吞葉5b線程的引入減少了程序并發(fā)執(zhí)行時(shí)所付出的時(shí)空開銷,使操作系統(tǒng)具有更好的并發(fā)性。線程是進(jìn)程中的一個(gè)實(shí)體.是被系統(tǒng)獨(dú)立調(diào)度和分配的基木爪位。箏線程的核t2,在于婪個(gè)代碼塊并發(fā)執(zhí)行.本質(zhì)待點(diǎn)在于各代碼塊之間的代碼是亂序執(zhí)行的。Java中的多線程并發(fā)執(zhí)行中的安全性與公平性:Java提供了線程類Thread.其中垂要方法是nmQ它為Thread類中的start0方法所調(diào)用.提供線程所要執(zhí)行的代碼。建立線程有兩種方法:繼承Thread類和實(shí)現(xiàn)Runnable接口。Java〉供了線程類Thread-實(shí)現(xiàn)了多線程并發(fā)執(zhí)行機(jī)制.在Java程序并發(fā)執(zhí)行中.必定會(huì)出現(xiàn)女個(gè)線程互斥訪問臨界資源的局面岡而并發(fā)系統(tǒng)^要解決的關(guān)犍就是 對臨界資源的管理和分配同一時(shí)刻只有一個(gè)線程能夠訪問臨界資源。然而在進(jìn)行臨界資源分配時(shí)有兩方而需要 考慮.即公平性和安全性。一方對申請?jiān)L問臨界資源的所有線程要公平對待.不能對部分線程優(yōu)先考慮,使一些線程氏時(shí)間獨(dú)占資源.而使其它的線程進(jìn)行K時(shí)間的等待.得不到資源"另一方面,在考慮了公平性的同時(shí),也不能忽視了安全性的考慮.出現(xiàn)某一個(gè)線程訪問臨界資源.致使程序不能正常運(yùn)行,產(chǎn)生嚴(yán)重的后果。在Java中對多線程的并發(fā)控制應(yīng)該做到公平性和安全性的理想兼容.兩方而都不町忽視。并發(fā)系統(tǒng)的公平性使得資源任多線程之間得到相為科學(xué)和合理的分配.安全性保證了各線程的正常調(diào)度運(yùn)行.從而使程序順利地執(zhí)行結(jié)束,完成任務(wù)。Java中多線程并發(fā)系統(tǒng)的安全性與公平性的具:具體實(shí)現(xiàn),對于多線程并發(fā)系統(tǒng)中的安全性,應(yīng)該做好對臨界資源的管理,以及對其訪問情況的監(jiān)琶,充分保證在臨界資源空閑時(shí)才能被線程申請使用.即使?fàn)奚c(diǎn)系統(tǒng)運(yùn)行時(shí)間.也要保正程序的正常執(zhí)行。下面以一個(gè)筍線程并發(fā)訪問臨界資源的例子來具體說明并發(fā)系統(tǒng)中的公平性和安全性問題。3.1問題描述如圖1所示,在單行隧逍中每次只能容納一列火午行駛 .木程序就是控制使兩邊的火午都能安全地通過隧道。如果火乍來自同一個(gè)方向.它們可以并行地安全通過隧道.但是如果是兩輛來自不同方向的火車,在隧道中相遇,就會(huì)發(fā)生沖突。
3.2功能實(shí)現(xiàn):本程序簡單模擬了上述問題,假設(shè)左邊是LeftTrain.右邊是RightTrmn,實(shí)現(xiàn)了火車為一.二.三列,以及分別考虎安全性和公平性的備種悄)兄的實(shí))兄模擬.說明并發(fā)系統(tǒng)中的公平性與安全性的垂要性。3.3程序中安全性與公平性的實(shí)現(xiàn):3.3.1流程分析D假設(shè)兩邊各有三列Train,對每列Train建立一個(gè)線程(LeftTrain或RightTrain).線程的執(zhí)行任務(wù)就是判斷隧道的狀態(tài)來完成Train的進(jìn)出隧道.保證互斥訪何隧道,使多個(gè)線程正常運(yùn)行。2)對于Train過隧道的控制有三種怙):?只控制LeftTrain和RightTrain線程類的運(yùn)行.不監(jiān)控隧道的狀態(tài)由Tunnel類實(shí)現(xiàn)。?只保證Train互斥地通過單行隧道(安全性).由SafeTunnel類實(shí)現(xiàn)它繼承TTunne1類。?既保證Train互斥通過隧道(安全性),又一定程度上保證了公平性.由FairTunnel類實(shí)現(xiàn),它也繼承了Tunnel類。3〉4〉3〉4〉3.3.2幺界而的動(dòng)畫處理lIlTtmnelCanvas類實(shí)現(xiàn)。SafeTunnel.java的控制分析⑴多線程的并發(fā)運(yùn)行。在LeftTrain.java和RightTrain.java中主要實(shí)現(xiàn)了多線程的并發(fā)運(yùn)行(如圖2所示)。f申胃/韓放茵參些]單有隆浪ThesinglefiletunnelmutualexclusionofFig.2iscontrolledandpursuedf申胃/韓放茵參些]單有隆浪ThesinglefiletunnelmutualexclusionofFig.2iscontrolledandpursuedLEFtTrainandRightTraintwokindsofthreadcompetefortheresource(singlefiletunnelLine),atthreadkindsofoperationfunctionrun()in,while(true){ while(!display.moveLeft(id))://notonTunnel control?LeftEnter(): while(display.moveLeft(id))://moveoverrunnelcontro1.LeftExitO:決定了LeftTrain和RightTrain誰先申請到資源,誰先到達(dá)各自的申請資源線⑷,誰就先申請到并占資源。b)使用資源并實(shí)現(xiàn)互斥功能:該函數(shù)通過一個(gè)整型變量來控制該類線程個(gè)數(shù)實(shí)現(xiàn).C)判斷占用資源的線程是否應(yīng)該釋放資源:、”I該線程到達(dá)自己的釋放資源線(B)時(shí)就應(yīng)改釋放調(diào)該資源。d)執(zhí)行禪放資源的功能.并喚醒其它所有的線程。安全性保證。在SafeTunneljava中主要實(shí)現(xiàn)了資源的互斥訪問功能(安全,性)。在該資源中設(shè)有全局變KnLeft和“Right分別代表各類線程占用資源的個(gè)數(shù)。程序?qū)崿F(xiàn)如下所示。synchronizedvoidLeftEnter()throwsinterruptedExceptionf while(nRight>O)wait():nLeft++;}synchronizedvoidLeftExit(){p__Left-:if(nLeft==O)notifyALLO:}判斷另一類線程是否占用資源:如果“Right等于0說明沒有占用該資源.如果nRight大于0,說明另一類線程正在占用該資源.這樣就掛起木線程。釋放資源并喚醒線程:如果nLeft(nRight)等干零,就說明該類線程已經(jīng)全釋放了資源,重新喚屜所有線程繼續(xù)競爭資源,這樣就保證了女線程的延續(xù)性。synchronized的作用。Java提供「專門機(jī)制以解決這種沖突,即synchronized關(guān)鋌字它有效避免了同一個(gè)數(shù)據(jù)對儀被多個(gè)線程同時(shí)訪問。synchronized方法使每個(gè)類實(shí)例對,應(yīng)一把鎖,每個(gè)synchronized方法都必須獲得調(diào)用該方法的類實(shí)例的鎖方能執(zhí)行.否則所屬線程阻塞本程序就是使用第一種方法來實(shí)現(xiàn)對公共資源的互斥訪問。3<3.3關(guān)-TFairTunnel.java的控制分析:FairTunnel類是對SafeTunnel類的改進(jìn).在實(shí)現(xiàn)多線程并發(fā)執(zhí)行中的安全性的同時(shí).也保證「多個(gè)線程對資源訪何的公平性。privatehatnLeft:0-nRight=0.wai-ht=0,waitLeft=0;privatebooleanRightturn=true:synchronizedvoidLeftEnter()throwsInterruptedExceptionf++waitLeft: while(nPdght>0Il(waitiight>0&&R/ght-turn))wait():-waitLeft:++nLeft:}synchronizedvoidLeftExit(){-rllt: Righrtum=true:——if(nLeft=0)notifyALLO:}在這個(gè)類中引用了以下幾個(gè)公共變雖"*nLeft,nRight:代表占用資源的同類線程數(shù):waitLeftwaitRight:代表巾請資源的同類線程數(shù):*Rightturn:是一個(gè)時(shí)間片開關(guān),它實(shí)現(xiàn)了兩邊的兩類線程公平地訪問資源.兩類線程申請資源獲得允許使用權(quán)力的時(shí)間片就是一列Train通過單行隧道的時(shí)間。掛起線程:忸_Right大于0時(shí)說明RightTram線程正在占用資源,牧a譏Right大于0時(shí),說明有新的RightTrain線程將準(zhǔn)備使用資源.Rightturn等于說明RightTrain線程有權(quán)繼續(xù)使用資源。在上述情況下,掛起LeftTrain線程。、勺第一個(gè)使用資源的LeftTrain線程到達(dá)資源釋放處時(shí)使"Rightturn改為true使得LeftTrain線程失去申請資源獲得允許使用權(quán)力。釋放資源并喚焉爻線程:如"nLeft(nRight)等于家就說明該類線程已經(jīng)全釋放了資源,重新喚陌所有線程繼續(xù)競爭資源.這樣就保證了女線程的延續(xù)性。c)4結(jié)束語:文中簡單模擬火午行駛*1行隧道.通過這個(gè)實(shí)驗(yàn)?zāi)M了女線程并發(fā)系統(tǒng)中的安全性與公平性問題.分別演示r在不同情況下產(chǎn)生何種后果:只考慮安全性,將會(huì)有一類Train(LeftTram或者RightTrain)長時(shí)間等待.申請不到資源:只考.電公平性會(huì)出現(xiàn)兩邊火車相撞的怙〉兄。由此町充分認(rèn)識(shí)打到并發(fā)系統(tǒng)中的安全性與公平性二者的辨證關(guān)系.通過兩者的結(jié)合.設(shè)il解決實(shí)際問題的最優(yōu)方案。參考文獻(xiàn):JMageeJ.KramerJ.Concurrency:StateModels&JavaProgramsfM].[s.1」:Willeypublishingcompany,1999EisenMB?SpellmaJlPT,BrownP0,etal?Clusteranalysisanddisplayofgenome-wideexpressionpatterns[A).Proc-Natl.Acad.SciUSA,95[CJ.USA:[S?n.]?199&148631486&?3]DudaR0.HartPE?PatternClassificatinandSceneAnalysiMJ.[S?I」JohnWileyandSorts,1973.XuYing,OlmanV,Xu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年長白朝鮮族自治縣招教考試備考題庫及答案解析(奪冠)
- 急診護(hù)理中急性心肌梗死的急救處理流程及制度
- 江蘇鹽城市五校聯(lián)盟2025-2026學(xué)年度第一學(xué)期期末學(xué)情調(diào)研檢測高一年級(jí)英語試題(含答案無聽力原文及音頻)
- 河北省石家莊市趙縣2025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試道德與法治試卷(無答案)
- 2025-2026學(xué)年度第一學(xué)期期末質(zhì)量檢測七年級(jí)道德與法治試卷
- 2024年黑龍江中醫(yī)藥大學(xué)馬克思主義基本原理概論期末考試題含答案解析(必刷)
- 2025年哈爾濱北方航空職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(必刷)
- 2025年浙江特殊教育職業(yè)學(xué)院單招職業(yè)技能測試題庫帶答案解析
- 2025年寧強(qiáng)縣招教考試備考題庫附答案解析
- 2024年齊魯醫(yī)藥學(xué)院馬克思主義基本原理概論期末考試題帶答案解析
- 2020春人教版部編本三年級(jí)下冊語文全冊課文原文
- 《微生物與殺菌原理》課件
- 醫(yī)療機(jī)構(gòu)藥事管理規(guī)定版
- DB34T 1909-2013 安徽省鉛酸蓄電池企業(yè)職業(yè)病危害防治工作指南
- 北京市歷年中考語文現(xiàn)代文之議論文閱讀30篇(含答案)(2003-2023)
- 檔案學(xué)概論-馮惠玲-筆記
- 全國民用建筑工程設(shè)計(jì)技術(shù)措施-結(jié)構(gòu)
- (正式版)YST 1693-2024 銅冶煉企業(yè)節(jié)能診斷技術(shù)規(guī)范
- 1999年勞動(dòng)合同范本【不同附錄版】
- 全國優(yōu)質(zhì)課一等獎(jiǎng)職業(yè)學(xué)校教師信息化大賽《語文》(基礎(chǔ)模塊)《我愿意是急流》說課課件
- 初三寒假家長會(huì)ppt課件全面版
評(píng)論
0/150
提交評(píng)論