一、操作系統(tǒng)中線程和進程的概念
現(xiàn)在的操作系統(tǒng)是多任務操作系統(tǒng)。多線程是實現(xiàn)多任務的一種方式。
進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啟動多個線程。比如在Windows系統(tǒng)中,一個運行的exe就是一個進程。
線程是指進程中的一個執(zhí)行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬于某個進程,進程中的多個線程共享進程的內存。
“同時”執(zhí)行是人的感覺,在線程之間實際上輪換執(zhí)行。
二、Java中的線程
在Java中,“線程”指兩件不同的事情: 1、java.lang.Thread類的一個實例; 2、線程的執(zhí)行。
使用java.lang.Thread類或者java.lang.Runnable接口編寫代碼來定義、實例化和啟動新線程。
一個Thread類實例只是一個對象,像Java中的任何其他對象一樣,具有變量和方法,生死于堆上。
Java中,每個線程都有一個調用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺運行著。
一個Java應用總是從main()方法開始運行,mian()方法運行在一個線程內,它被稱為主線程。
一旦創(chuàng)建一個新的線程,就產生一個新的調用棧。
線程總體分兩類:用戶線程和守候線程。
當所有用戶線程執(zhí)行完畢的時候,JVM自動關閉。但是守候線程卻不獨立于JVM,守候線程一般是由操作系統(tǒng)或者用戶自己創(chuàng)建的。
新聞熱點
疑難解答