下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)中的進(jìn)程線程與Java的多線程OSoftheProcess、ThreadandjavamultithreadHuZhiqinNingxiaTVUniversity,Yinchuan750002,China:Thispaperreportsastudyondetailedexpositionsabouttherelationshipamongtheprocess,threadingandmulti-threadedjava,analyzingfromthebasicconceptoftheprocess,threadingandmulti-threading,demonstrations
2、arealsoofferedtoshowtheapplicationsofthreadintheproceduresJava、creationofthreadingandrunning.1進(jìn)程與線程操作系統(tǒng)中進(jìn)程是指特定的代碼序列在指定數(shù)據(jù)集合上的一次執(zhí)行活動(dòng),是指并行程序的一次執(zhí)行過程,在Windows95中,就是一個(gè)EXE文件的執(zhí)行過程。是一個(gè)動(dòng)態(tài)概念,具有動(dòng)態(tài)屬性,每一個(gè)進(jìn)程都是由內(nèi)核對(duì)象和地址空間所組成的,內(nèi)核對(duì)象可以讓系統(tǒng)在其內(nèi)存放有關(guān)進(jìn)程的統(tǒng)計(jì)信息并使系統(tǒng)能夠以此來管理進(jìn)程,而地址空間則包括了所有程序模塊的代碼和數(shù)據(jù)以及線程堆棧、堆分配空間等動(dòng)態(tài)分配的空間。通俗點(diǎn)講,進(jìn)程就是正在計(jì)
3、算機(jī)上運(yùn)行的可執(zhí)行文件針對(duì)特定的輸入數(shù)據(jù)的一個(gè)實(shí)例,從此意義上講,進(jìn)程應(yīng)包含三部分內(nèi)容,即:進(jìn)程二PCB程序段+數(shù)據(jù)(PCB進(jìn)程控制塊),同一個(gè)可執(zhí)行程序文件如果操作不同的輸入數(shù)據(jù)就是兩個(gè)不同的進(jìn)程。進(jìn)程理解為一個(gè)線程容器,線程不能獨(dú)立存在,它必須隸屬于某個(gè)進(jìn)程,而進(jìn)程也至少擁有一個(gè)線程,如果一個(gè)進(jìn)程的所有線程都結(jié)束了那么進(jìn)程也就結(jié)束了。所謂線程是指由進(jìn)程進(jìn)一步派生出來的一組代碼(指令組)的執(zhí)行過程。一個(gè)進(jìn)程可以產(chǎn)生多個(gè)線程,這些線程都共享該進(jìn)程的地址空間,它們可以并行、異步執(zhí)行。在80年代后的現(xiàn)代操作系統(tǒng)中引入的線程,使之僅做為調(diào)度和分派的基本單位,但不擁有資源(僅擁有一點(diǎn)其運(yùn)行中必不可少的
4、資源:程序計(jì)數(shù)器、一組寄存器、棧),以便輕裝運(yùn)行,又不頻繁對(duì)之調(diào)度、切換。采用線程最主要的好處是:使同一個(gè)程序能有幾個(gè)并行執(zhí)行的路徑,提高并行執(zhí)行程度,從而進(jìn)一步提高執(zhí)行速度;線程需要的系統(tǒng)開銷比進(jìn)程要小。應(yīng)該說明的是,在Windows95中,多任務(wù)”是基于線程而不是基于進(jìn)程。線程是允許進(jìn)行并行計(jì)算的一個(gè)抽象概念,在另一個(gè)線程完成計(jì)算任務(wù)的同時(shí),一個(gè)線程可以對(duì)圖像進(jìn)行更新,二個(gè)線程可以同時(shí)處理同一個(gè)進(jìn)程發(fā)出的二個(gè)網(wǎng)絡(luò)請(qǐng)求。線程是進(jìn)程調(diào)度的基本單位,負(fù)責(zé)執(zhí)行在進(jìn)程地址空間內(nèi)的代碼,線程是進(jìn)程的一條執(zhí)行路徑,它包含獨(dú)立的堆棧和CPU寄存器狀態(tài),每個(gè)線程共享所有的進(jìn)程資源,包括打開的文件、信號(hào)標(biāo)識(shí)及
5、動(dòng)態(tài)分配的內(nèi)存等等。由此可見,傳統(tǒng)的進(jìn)程可稱之為重型進(jìn)程,線程可稱之為輕型進(jìn)程。進(jìn)程有三種基本狀態(tài):就緒、阻塞、執(zhí)行。線程同樣也有同樣三種基本狀態(tài)。在現(xiàn)代操作系統(tǒng)中,進(jìn)程是分配單元,而線程是執(zhí)行單元(如圖1)O2進(jìn)程與JAVA線程的區(qū)別應(yīng)用程序在執(zhí)行過程中存在一個(gè)內(nèi)存空間的初始入口點(diǎn)地址、一個(gè)程序執(zhí)行過程中的代碼執(zhí)行序列以及用于標(biāo)識(shí)進(jìn)程結(jié)束的內(nèi)存出口點(diǎn)地址,在進(jìn)程執(zhí)行過程中的每一時(shí)間點(diǎn)均有唯一的處理器指令與內(nèi)存單元地址相對(duì)應(yīng)。Java語(yǔ)言中定義的線程(Thread)同樣包括一個(gè)內(nèi)存入口點(diǎn)地址、一個(gè)出口點(diǎn)地址以及能夠順序執(zhí)行的代碼序列。但是進(jìn)程與線程的重要區(qū)別在于線程不能夠單獨(dú)執(zhí)行,它必須運(yùn)行在
6、處于活動(dòng)狀態(tài)的應(yīng)用程序進(jìn)程中,因此可以定義線程是程序內(nèi)部的具有并發(fā)性的順序代碼流。Unix操作系統(tǒng)和MicrosoftWindows操作系統(tǒng)支持多用戶、多進(jìn)程的并發(fā)執(zhí)行,而Java語(yǔ)言支持應(yīng)用程序進(jìn)程內(nèi)部的多個(gè)執(zhí)行線程的并發(fā)執(zhí)行。多線程的意義在于一個(gè)應(yīng)用程序的多個(gè)邏輯單元可以并發(fā)地執(zhí)行。但是多線程并不意味著多個(gè)用戶進(jìn)程在執(zhí)行,操作系統(tǒng)也不把每個(gè)線程作為獨(dú)立的進(jìn)程來分配獨(dú)立的系統(tǒng)資源。進(jìn)程可以創(chuàng)建其子進(jìn)程,子進(jìn)程與父進(jìn)程擁有不同的可執(zhí)行代碼和數(shù)據(jù)內(nèi)存空間。而在用于代表應(yīng)用程序的進(jìn)程中多個(gè)線程共享數(shù)據(jù)內(nèi)存空間,但保持每個(gè)線程擁有獨(dú)立的執(zhí)行堆棧和程序執(zhí)行上下文(Context)o基于上述區(qū)別,線程也
7、可以稱為輕型進(jìn)程(LightWeightProcess,LWPo不同線程間允許任務(wù)協(xié)作和數(shù)據(jù)交換,使得在計(jì)算機(jī)系統(tǒng)資源消耗等方面非常廉價(jià)。線程需要操作系統(tǒng)的支持,不是所有類型的計(jì)算機(jī)都支持多線程應(yīng)用程序。Java程序設(shè)計(jì)語(yǔ)言將線程支持與語(yǔ)言運(yùn)行環(huán)境結(jié)合在一起,提供了多任務(wù)并發(fā)執(zhí)行的能力。這就好比一個(gè)人在處理家務(wù)的過程中,將衣服放到洗衣機(jī)中自動(dòng)洗滌后將大米放在電飯鍋里,然后開始做菜。等菜做好了,飯熟了同時(shí)衣服也洗好了。需要注意的是,在應(yīng)用程序中使用多線程不會(huì)增加CPU的數(shù)據(jù)處理能力。只有在多CPU的計(jì)算機(jī)或者在網(wǎng)絡(luò)計(jì)算體系結(jié)構(gòu)下,將Java程序劃分為多個(gè)并發(fā)執(zhí)行線程后,同時(shí)啟動(dòng)多個(gè)中,才能提高應(yīng)
8、用程序的執(zhí)行效率。Java虛擬機(jī)線程運(yùn)行,使不同的線程運(yùn)行在基于不同處理器的3進(jìn)程與多線程多線程是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況。實(shí)現(xiàn)單個(gè)進(jìn)程中的并發(fā)計(jì)算。各線程間共享進(jìn)程空間的數(shù)據(jù),并利用這些共享單元來實(shí)現(xiàn)數(shù)據(jù)交換、實(shí)時(shí)通信與必要的同步操是計(jì)算作。多線程的程序能更好地表述和解決現(xiàn)實(shí)世界的具體問題,機(jī)應(yīng)用開發(fā)和程序設(shè)計(jì)的一個(gè)必然發(fā)展趨勢(shì)(如圖2)o4Java與多線程Java語(yǔ)言的一個(gè)重要功能特點(diǎn)就是內(nèi)置對(duì)多線程的支持,它使得編程人員可以很方便地開發(fā)出具有多線程功能,能同時(shí)處理多個(gè)任務(wù)的功能強(qiáng)大的應(yīng)用程序。Java的所有類都是在多線程的思想下定義的,Java利用線程使整個(gè)系統(tǒng)成為異步。每個(gè)Java程序都有一個(gè)隱含的主線程:applicationmain方法Applet小程序,主線程指揮瀏覽器加載并執(zhí)行java小程序。4.1Thread類在Java程序中的應(yīng)用Thread類綜合了Java程序中一個(gè)線程需要擁有的屬性和方法,當(dāng)生成一個(gè)Thread類的對(duì)象后,一個(gè)新的線程誕生了。每個(gè)線程都是通過目標(biāo)對(duì)象的方法run()來完成其操作的。方法run()稱為線程體。提供線程體的目標(biāo)對(duì)象是在初始化一個(gè)線程時(shí)指明的。任何實(shí)現(xiàn)了Runnable接口(實(shí)現(xiàn)run()方法)的類實(shí)例都可以作為線程的目標(biāo)對(duì)象。如:publicclassThrea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年飛機(jī)租賃與購(gòu)買合同3篇
- 2024版系統(tǒng)集成項(xiàng)目外包合同3篇
- 二零二五年度鋼結(jié)構(gòu)廠房項(xiàng)目施工圖紙及技術(shù)交底合同3篇
- 二零二五年餐飲店員工派遣及服務(wù)質(zhì)量保證合同3篇
- 二零二五版半地下室租賃合同附帶租賃雙方責(zé)任界定3篇
- 烏蘭察布醫(yī)學(xué)高等??茖W(xué)?!缎W(xué)英語(yǔ)教學(xué)研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版?zhèn)€人住房貸款利率調(diào)整協(xié)議2篇
- 二零二五版房地產(chǎn)抵押權(quán)抵押合同示范文本3篇
- 二零二五年餐飲廚房整體承包運(yùn)營(yíng)協(xié)議3篇
- 二零二五年度新型商務(wù)寫字樓租賃合同范本3篇 - 副本
- 農(nóng)化分析土壤P分析
- GB/T 18476-2001流體輸送用聚烯烴管材耐裂紋擴(kuò)展的測(cè)定切口管材裂紋慢速增長(zhǎng)的試驗(yàn)方法(切口試驗(yàn))
- GA 1551.5-2019石油石化系統(tǒng)治安反恐防范要求第5部分:運(yùn)輸企業(yè)
- 拘留所教育課件02
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫(kù)及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級(jí)上冊(cè)地理全冊(cè)單元測(cè)試卷(含期中期末試卷及答案)
評(píng)論
0/150
提交評(píng)論