所謂進程(process)就是一塊包含了某些資源的記憶體區域。作業系統利用進程把它的工作劃分為一些功能單元。進程中所包含的一個或多個執行單元稱為執行緒(thread)。進程還擁有一個私有的虛擬位址空間,該空間僅能被它所包含的執行緒存取。
執行緒只能歸屬於一個行程並且它只能存取該行程所擁有的資源。當作業系統建立一個行程後,該行程會自動申請一個名為主執行緒或首要執行緒的執行緒。 (推薦學習:Java影片教學)
進程並不是真正意義上的同時運行,而是並發運行。
一個行程至少有一個執行緒。執行緒的劃分尺度小於進程,使得多執行緒程式的並發性高。另外,進程在執行過程中擁有獨立的記憶體單元,而多個執行緒共享內存,從而大大提高了程式的運作效率。
執行緒在執行過程中與進程的差異在於每個獨立的執行緒都有一個程式運行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用來實現進程的調度和管理以及資源分配。
多個執行緒或進程」同時」運行只是感官上的一種表現。事實上進程和執行緒是並發運行的,OS的執行緒調度機制將時間劃分為很多時間片段(時間片),盡可能均勻分配給正在運行的程序,取得CPU時間片的執行緒或進程得以執行,其他則等待。而CPU則在這些行程或執行緒上來回切換運行。微觀上所有行程和執行緒是走走停停的,宏觀上都在運行,這種都運行的現象叫並發,但是不是絕對意義上的「同時發生。
更多Java相關技術文章,請造訪Java開發教學欄位進行學習!
以上是多線程是並發還是並行的詳細內容。更多資訊請關注PHP中文網其他相關文章!