資源描述:
《java多線程編程總結(jié)new》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Java多線程編程線程:大總結(jié)Java線程是Java語言中一個(gè)非常重要的部分,Java5之前,多線程的語言支持還是比較弱的,內(nèi)容也較少,寫一個(gè)復(fù)雜的多線程程序是相當(dāng)有挑戰(zhàn)性的。在Java5以后,Java對(duì)多線程做了很多擴(kuò)展,擴(kuò)展部分稱之為并發(fā)包。這部分內(nèi)容大大增強(qiáng)了Java多線程編程的能力,通過使用Java5線程新特征的API,可以很容易的做出復(fù)雜的多線程程序。與其他語言相比,已經(jīng)是相當(dāng)強(qiáng)悍了。通過十多篇博文,將Java多線程的方方面面過了一遍,對(duì)我來說是一個(gè)學(xué)習(xí)和提高的過程,也為Java線程系列博文能給后來的學(xué)習(xí)者帶來便利。知識(shí)點(diǎn)都過了一遍,要總
2、結(jié)起來感覺很困難,畢竟Java線程是一個(gè)龐大的話題,不知道從何說起,如果泛泛而談,那總結(jié)還有什么意義呢,再次,將前面的博文串聯(lián)起來,按照先后順序加上鏈接,以方便瀏覽也最好的首尾。下面是Java線程系列博文的一個(gè)編目:Java線程:概念與原理Java線程:創(chuàng)建與啟動(dòng)Java線程:線程棧模型與線程的變量Java線程:線程狀態(tài)的轉(zhuǎn)換Java線程:線程的同步與鎖Java線程:線程的交互Java線程:線程的調(diào)度-休眠Java線程:線程的調(diào)度-優(yōu)先級(jí)Java線程:線程的調(diào)度-讓步Java線程:線程的調(diào)度-合并Java線程:線程的調(diào)度-守護(hù)線程Java線程:線程
3、的同步-同步方法Java線程:線程的同步-同步塊Java線程:并發(fā)協(xié)作-生產(chǎn)者消費(fèi)者模型Java線程:并發(fā)協(xié)作-死鎖Java線程:volatile關(guān)鍵字Java線程:新特征-線程池Java線程:新特征-有返回值的線程Java線程:新特征-鎖(上)Java線程:新特征-鎖(下)Java線程:新特征-信號(hào)量Java線程:新特征-阻塞隊(duì)列Java線程:新特征-阻塞棧Java線程:新特征-條件變量Java線程:新特征-原子量Java線程:新特征-障礙器Java線程:大總結(jié)Java線程:概念與原理一、操作系統(tǒng)中線程和進(jìn)程的概念現(xiàn)在的操作系統(tǒng)是多任務(wù)操作系統(tǒng)。
4、多線程是實(shí)現(xiàn)多任務(wù)的一種方式。進(jìn)程是指一個(gè)內(nèi)存中運(yùn)行的應(yīng)用程序,每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程中可以啟動(dòng)多個(gè)線程。比如在Windows系統(tǒng)中,一個(gè)運(yùn)行的exe就是一個(gè)進(jìn)程。線程是指進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程中可以運(yùn)行多個(gè)線程。比如java.exe進(jìn)程中可以運(yùn)行很多線程。線程總是屬于某個(gè)進(jìn)程,進(jìn)程中的多個(gè)線程共享進(jìn)程的內(nèi)存?!巴瑫r(shí)”執(zhí)行是人的感覺,在線程之間實(shí)際上輪換執(zhí)行。二、Java中的線程在Java中,“線程”指兩件不同的事情:1、java.lang.Thread類的一個(gè)實(shí)例;2、線程的執(zhí)行。使用java.lang.Thread
5、類或者java.lang.Runnable接口編寫代碼來定義、實(shí)例化和啟動(dòng)新線程。一個(gè)Thread類實(shí)例只是一個(gè)對(duì)象,像Java中的任何其他對(duì)象一樣,具有變量和方法,生死于堆上。Java中,每個(gè)線程都有一個(gè)調(diào)用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺(tái)運(yùn)行著。一個(gè)Java應(yīng)用總是從main()方法開始運(yùn)行,mian()方法運(yùn)行在一個(gè)線程內(nèi),它被稱為主線程。一旦創(chuàng)建一個(gè)新的線程,就產(chǎn)生一個(gè)新的調(diào)用棧。線程總體分兩類:用戶線程和守候線程。當(dāng)所有用戶線程執(zhí)行完畢的時(shí)候,JVM自動(dòng)關(guān)閉。但是守候線程卻不獨(dú)立于JVM,守候線程一般是由操作系統(tǒng)或者用戶自
6、己創(chuàng)建的。Java線程:創(chuàng)建與啟動(dòng)一、定義線程1、擴(kuò)展java.lang.Thread類。此類中有個(gè)run()方法,應(yīng)該注意其用法:publicvoidrun()如果該線程是使用獨(dú)立的Runnable運(yùn)行對(duì)象構(gòu)造的,則調(diào)用該Runnable對(duì)象的run方法;否則,該方法不執(zhí)行任何操作并返回。Thread的子類應(yīng)該重寫該方法。2、實(shí)現(xiàn)java.lang.Runnable接口。voidrun()使用實(shí)現(xiàn)接口Runnable的對(duì)象創(chuàng)建一個(gè)線程時(shí),啟動(dòng)該線程將導(dǎo)致在獨(dú)立執(zhí)行的線程中調(diào)用對(duì)象的run方法。方法run的常規(guī)協(xié)定是,它可能執(zhí)行任何所需的操作。二、
7、實(shí)例化線程1、如果是擴(kuò)展java.lang.Thread類的線程,則直接new即可。2、如果是實(shí)現(xiàn)了java.lang.Runnable接口的類,則用Thread的構(gòu)造方法:Thread(Runnabletarget)Thread(Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget)Thread(ThreadGroupgroup,Runnabletarget,Stringname)Thread(ThreadGroupgroup,Runnabletarget,Stringn
8、ame,longstackSize)三、啟動(dòng)線程在線程的Thread對(duì)象上調(diào)用start()方法,而不是run()或者別的