一、操作系統(tǒng)中線程和進(jìn)程的概念
現(xiàn)在的操作系統(tǒng)是多任務(wù)操作系統(tǒng)。多線程是實(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)存。
“同時(shí)”執(zhí)行是人的感覺(jué),在線程之間實(shí)際上輪換執(zhí)行。
二、Java中的線程
在Java中,“線程”指兩件不同的事情: 1、java.lang.Thread類(lèi)的一個(gè)實(shí)例; 2、線程的執(zhí)行。
使用java.lang.Thread類(lèi)或者java.lang.Runnable接口編寫(xiě)代碼來(lái)定義、實(shí)例化和啟動(dòng)新線程。
一個(gè)Thread類(lèi)實(shí)例只是一個(gè)對(duì)象,像Java中的任何其他對(duì)象一樣,具有變量和方法,生死于堆上。
Java中,每個(gè)線程都有一個(gè)調(diào)用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺(tái)運(yùn)行著。
一個(gè)Java應(yīng)用總是從main()方法開(kāi)始運(yùn)行,mian()方法運(yùn)行在一個(gè)線程內(nèi),它被稱(chēng)為主線程。
一旦創(chuàng)建一個(gè)新的線程,就產(chǎn)生一個(gè)新的調(diào)用棧。
線程總體分兩類(lèi):用戶線程和守候線程。
當(dāng)所有用戶線程執(zhí)行完畢的時(shí)候,JVM自動(dòng)關(guān)閉。但是守候線程卻不獨(dú)立于JVM,守候線程一般是由操作系統(tǒng)或者用戶自己創(chuàng)建的。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注