Java的多線(xiàn)程編程.pdf

Java的多線(xiàn)程編程.pdf

ID:52242161

大?。?8.65 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2020-03-25

Java的多線(xiàn)程編程.pdf_第1頁(yè)
Java的多線(xiàn)程編程.pdf_第2頁(yè)
Java的多線(xiàn)程編程.pdf_第3頁(yè)
Java的多線(xiàn)程編程.pdf_第4頁(yè)
Java的多線(xiàn)程編程.pdf_第5頁(yè)
資源描述:

《Java的多線(xiàn)程編程.pdf》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、資料來(lái)源于網(wǎng)絡(luò)PDF版本由fantasybob制作Java的多線(xiàn)程編程在Java程序中使用多線(xiàn)程要比在C或C++中容易得多,這是因?yàn)镴ava編程語(yǔ)言提供了語(yǔ)言級(jí)的支持。本文通過(guò)簡(jiǎn)單的編程示例來(lái)說(shuō)明Java程序中的多線(xiàn)程是多么直觀。讀完本文以后,用戶(hù)應(yīng)該能夠編寫(xiě)簡(jiǎn)單的多線(xiàn)程程序。為什么會(huì)排隊(duì)等待?下面的這個(gè)簡(jiǎn)單的Java程序完成四項(xiàng)不相關(guān)的任務(wù)。這樣的程序有單個(gè)控制線(xiàn)程,控制在這四個(gè)任務(wù)之間線(xiàn)性地移動(dòng)。此外,因?yàn)樗璧馁Y源?打印機(jī)、磁盤(pán)、數(shù)據(jù)庫(kù)和顯示屏--由于硬件和軟件的限制都有內(nèi)在的潛伏時(shí)間,所以每項(xiàng)任務(wù)都包含明顯的等待時(shí)間。因此,程序在訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)之前必須等待打印機(jī)完成打印文件的

2、任務(wù),等等。如果您正在等待程序的完成,則這是對(duì)計(jì)算資源和您的時(shí)間的一種拙劣使用。改進(jìn)此程序的一種方法是使它成為多線(xiàn)程的。四項(xiàng)不相關(guān)的任務(wù)classmyclass{staticpublicvoidmain(Stringargs[]){print_a_file();manipulate_another_file();access_database();draw_picture_on_screen();}}在本例中,每項(xiàng)任務(wù)在開(kāi)始之前必須等待前一項(xiàng)任務(wù)完成,即使所涉及的任務(wù)毫不相關(guān)也是這樣。但是,在現(xiàn)實(shí)生活中,我們經(jīng)常使用多線(xiàn)程模型。我們?cè)谔幚砟承┤蝿?wù)的同時(shí)也可以讓孩子、配偶和父母完成

3、別的任務(wù)。例如,我在寫(xiě)信的同時(shí)可能打發(fā)我的兒子去郵局買(mǎi)郵票。用軟件術(shù)語(yǔ)來(lái)說(shuō),這稱(chēng)為多個(gè)控制(或執(zhí)行)線(xiàn)程??梢杂脙煞N不同的方法來(lái)獲得多個(gè)控制線(xiàn)程:多個(gè)進(jìn)程在大多數(shù)操作系統(tǒng)中都可以創(chuàng)建多個(gè)進(jìn)程。當(dāng)一個(gè)程序啟動(dòng)時(shí),它可以為即將開(kāi)始的每項(xiàng)任務(wù)創(chuàng)建一個(gè)進(jìn)程,并允許它們同時(shí)運(yùn)行。當(dāng)一個(gè)程序因等待網(wǎng)絡(luò)訪(fǎng)問(wèn)或用戶(hù)輸入而被阻塞時(shí),另一個(gè)程序還可以運(yùn)行,這樣就增加了資源利用率。但是,按照這種方式創(chuàng)建每個(gè)進(jìn)程要付出一定的代價(jià):設(shè)置一個(gè)進(jìn)程要占用相當(dāng)一部分處理器時(shí)間和內(nèi)存資源。而且,大多數(shù)操作系統(tǒng)不允許進(jìn)程訪(fǎng)問(wèn)其他進(jìn)程的內(nèi)存空間。因此,進(jìn)程間的通信很不方便,并且也不會(huì)將它自己提供給容易的編程模型。線(xiàn)程

4、資料來(lái)源于網(wǎng)絡(luò)PDF版本由fantasybob制作線(xiàn)程也稱(chēng)為輕型進(jìn)程(LWP)。因?yàn)榫€(xiàn)程只能在單個(gè)進(jìn)程的作用域內(nèi)活動(dòng),所以創(chuàng)建線(xiàn)程比創(chuàng)建進(jìn)程要廉價(jià)得多。這樣,因?yàn)榫€(xiàn)程允許協(xié)作和數(shù)據(jù)交換,并且在計(jì)算資源方面非常廉價(jià),所以線(xiàn)程比進(jìn)程更可取。線(xiàn)程需要操作系統(tǒng)的支持,因此不是所有的機(jī)器都提供線(xiàn)程。Java編程語(yǔ)言,作為相當(dāng)新的一種語(yǔ)言,已將線(xiàn)程支持與語(yǔ)言本身合為一體,這樣就對(duì)線(xiàn)程提供了強(qiáng)健的支持。使用Java編程語(yǔ)言實(shí)現(xiàn)線(xiàn)程Java編程語(yǔ)言使多線(xiàn)程如此簡(jiǎn)單有效,以致于某些程序員說(shuō)它實(shí)際上是自然的。盡管在Java中使用線(xiàn)程比在其他語(yǔ)言中要容易得多,仍然有一些概念需要掌握。要記住的一件重要的

5、事情是main()函數(shù)也是一個(gè)線(xiàn)程,并可用來(lái)做有用的工作。程序員只有在需要多個(gè)線(xiàn)程時(shí)才需要?jiǎng)?chuàng)建新的線(xiàn)程。Thread類(lèi)Thread類(lèi)是一個(gè)具體的類(lèi),即不是抽象類(lèi),該類(lèi)封裝了線(xiàn)程的行為。要?jiǎng)?chuàng)建一個(gè)線(xiàn)程,程序員必須創(chuàng)建一個(gè)從Thread類(lèi)導(dǎo)出的新類(lèi)。程序員必須覆蓋Thread的run()函數(shù)來(lái)完成有用的工作。用戶(hù)并不直接調(diào)用此函數(shù);而是必須調(diào)用Thread的start()函數(shù),該函數(shù)再調(diào)用run()。下面的代碼說(shuō)明了它的用法:創(chuàng)建兩個(gè)新線(xiàn)程importjava.util.*;classTimePrinterextendsThread{intpauseTime;Stringname;p

6、ublicTimePrinter(intx,Stringn){pauseTime=x;name=n;}publicvoidrun(){while(true){try{System.out.println(name+":"+newDate(System.currentTimeMillis()));Thread.sleep(pauseTime);}catch(Exceptione){System.out.println(e);}}}資料來(lái)源于網(wǎng)絡(luò)PDF版本由fantasybob制作staticpublicvoidmain(Stringargs[]){TimePrintertp1=ne

7、wTimePrinter(1000,"FastGuy");tp1.start();TimePrintertp2=newTimePrinter(3000,"SlowGuy");tp2.start();}}在本例中,我們可以看到一個(gè)簡(jiǎn)單的程序,它按兩個(gè)不同的時(shí)間間隔(1秒和3秒)在屏幕上顯示當(dāng)前時(shí)間。這是通過(guò)創(chuàng)建兩個(gè)新線(xiàn)程來(lái)完成的,包括main()共三個(gè)線(xiàn)程。但是,因?yàn)橛袝r(shí)要作為線(xiàn)程運(yùn)行的類(lèi)可能已經(jīng)是某個(gè)類(lèi)層次的一部分,所以就不能再按這種機(jī)制創(chuàng)建線(xiàn)程。雖然在同一個(gè)類(lèi)中可以實(shí)現(xiàn)任意數(shù)量

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。