線程概述 首先先理解下什麼是進程和線程? 進程: 進程是指一個正在運行中的程式。 每個進程執行都有一個或多個執行順序,這個順序就是一個控制單元(或者叫一個執行路徑),控製程序的運行。 舉例: 大家使用過的迅雷下載,當你啟動迅雷開始下載後,你可以選擇下載單個或者同時下載多個文件。每一個下載任務就是一個 ...
線程概述
首先先理解下什麼是進程和線程?
進程:
進程是指一個正在運行中的程式。
每個進程執行都有一個或多個執行順序,這個順序就是一個控制單元(或者叫一個執行路徑),控製程序的運行。
舉例:
大家使用過的迅雷下載,當你啟動迅雷開始下載後,你可以選擇下載單個或者同時下載多個文件。每一個下載任務就是一個控制單元,每一個下載任務也就是線程。也比如QQ,一個QQ就是一個進程,QQ里的語音功能是一個線程,視頻聊天是一個進程.......等等等等
線程:
線程就是進程內部含有的一個或多個順序執行流,每一個順序執行流就是一個線程。
線程是進程的一個實體,線程式控制制著進程的執行。一個線程可以控制影響另一個進程,同一進程中的多線程可以併發運行。線程可以共用數據給同進程下的線程。
一個程式至少有一個進程,一個進程至少有一個線程!線程不能獨立存在,必須依賴於進程。
兩者的區別:
進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變數,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉
延伸思考:Java的JVM啟動是單線程還是多線程?
答案:JVM啟動不止一個線程,還有負責垃圾回收機制的線程。