Java多線程1—程序、進程、線程比較

許多人對於程序、進程、線程這幾個概念許多人都分的不是很清楚,下面我們就簡單的介紹一下它們的區別。

程序是計算機指令的集合,它以文件的形式存儲在磁盤上。程序是通常我們所寫好的存儲於計算機上沒有執行的指令的集合,通俗的講就是我們自己寫的代碼。我們寫的代碼不可能只是爲了存儲吧,必須運行纔不會浪費我們的辛苦,等到我們將我們的代碼運行了,就產生了進程。

進程:是一個程序在其自身的地址空間中的一次執行活動。通常的程序是不能併發執行的。爲了使程序能夠獨立運行,應該爲之配置一些進程控制塊,即PCB;而由程序段,相關數據段和PCB三部分構成了進程實體。通常我們並不區分進程和進程實體,基本上就代表同一事物。進程是資源申請、調度和獨立運行的單位,因此,它使用系統中的運行資源;而程序不能申請系統資源,不能被系統調度,也不能作爲獨立運行的單位,因此,它不佔用系統的運行資源。

20世紀60年代人們提出了進程的概念,在OS中一直都是以進程作爲能獨立運行和擁有資源的基本單位。但是進程間的切換比較麻煩費時,所以在20世紀80年代人們爲了提高系統內程序併發執行的程度,進一步提高系統的吞吐量,提出了比進程更小的能獨立運行的基本單位。線程又稱爲輕量級進程,它和進程一樣擁有獨立的執行控制,由操作系統負責調度,區別在於線程沒有獨立的存儲空間,而是和所屬進程中的其它線程共享一個存儲空間,這使得線程間的通信遠較進程簡單。一個進程可以同時擁有一個或者多個線程,這幾個線程共享同樣的數據。

現在的CPU幾乎都是多核的了,這樣多線程的程序,運行起來就更加流暢。下面我們通過圖片來比較一下單線程和多線程:


這個就好比我們算一道數學題(2+3)*(5-3),如果我們使用左邊的單線程,只能是先算2+3然後算5-3,最後結果相加。但是如果我們使用右邊的多線程,我們可以同時對2+3和5-3進行運算,然後再對最後的結果相加。我想哪個運行的比較快就不用說了,另外多線程在圖像處理,多用戶通信等方面用戶都很多。

可能讀者會說如果我們用的是單CPU的PC那麼他們就差別不大了,但是現在的事實是現在的PC基本都是多核了,所以多線程是爲了我們更好的將程序移植到多核的CPU上。還有一點就是對於線程的切換,比進程的切換速度快的多,多線程更好的發揮CPU的效率。

寫的不好,如果哪裏錯了希望大家指出。希望對你有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章