一、操作系統中線程和進程的概念
現在的操作系統是多任務操作系統。多線程是實現多任務的一種方式。
進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啟動多個線程。比如在Windows系統中,一個運行的exe就是一個進程。
線程是指進程中的一個執行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬於某個進程,進程中的多個線程共享進程的內存。
“同時”執行是線程給人的感覺,在線程之間實際上是輪換執行。
二、Java中的線程
創建多線程的兩種方式:繼承Thread類和實現Runnable接口。
一個Thread類實例只是一個對象,像Java中的任何其他對象一樣,具有變量和方法,生死於堆上。
Java中,每個線程都有一個調用棧,即使不在程序中創建任何新的線程,線程也在后台運行着。
一個Java應用總是從main()方法開始運行,mian()方法運行在一個線程內,它被稱為主線程。
一旦創建一個新的線程,就產生一個新的調用棧。
線程總體分兩類:用戶線程和守候線程。
當所有用戶線程執行完畢的時候,JVM自動關閉。但是守候線程卻不獨立於JVM,守候線程一般是由操作系統或者用戶自己創建的。