進程和線程,併發和並行,同步和異步,高併發和多線程,理一理概念

1.1:線程和進程

根本區別:算法

進程是操做系統資源分配的基本單位,線程是任務調度和執行的基本單位數據庫

開銷方面:編程

每一個進程都有本身獨立的代碼和數據空間,程序之間的切換開銷較大。網絡

線程能夠看做是輕量級的進程,同一類線程共享代碼和數據空間,每一個線程都有本身獨立的運行棧和程序計數器,線程之間開銷小。數據結構

所處環境:多線程

一個操做系統能同時運行多個進程(程序)。架構

在一個進程中,能夠有多個線程同時執行。併發

內存分配方面:異步

系統在運行的時候會爲每一個進程分配不一樣的內存空間。高併發

對線程而言,系統不會爲線程分配內存(線程使用的資源,來自於其所屬進程的資源),線程組之間只能共享資源。

包含關係:

沒有線程的進程能夠看做是單線程。一個進程能夠包含多個線程

線程是進程的一部分,因此線程也稱爲輕量級進程

 

1.2:併發和並行

併發:

指應用能交替執行不一樣的任務,相似於多線程的原理。

並行:

指應用可以同時執行不一樣的任務

1.3:同步和異步

一般是用來形容一次方法調用。

同步:

必須等方法調用返回之後,才能繼續調用

異步:

更像是一個消息的傳遞,調用者沒必要等待該方法的調用完成,能夠繼續執行後面相關的調用。

 

1.4:什麼是高併發編程?

高併發,是指短期內能同時並行處理不少請求和訪問。

好比,12306搶票和淘寶雙11活動。

想要系統可以適應高併發狀態,則須要全面優化,包括:硬件、網絡、系統架構、開發語言選取、數據結構的運用、算法優化、數據庫優化。而多線程只是其中解決方法的一種。

多線程在解決高併發問題中起到的做用只是:

使計算機的資源在每一時刻都能達到最大的利用率,不至於浪費計算機資源使其閒置。

1.5:高併發和多線程?

高併發不等於多線程

多線程對應的CPU,高併發對應的是訪問請求。

能夠單線程處理多有的訪問請求,也能夠多線程同時處理訪問請求。

多線程不必定只有在併發的時候纔用到。多線程主要是爲了不一個線程過載影響效率,多線程也能夠將單任務截取爲多段同時進行,這種狀況的多線程並非爲了處理併發。

比如植樹節種樹,每一個人至關於一個線程,不少人至關於多個線程,你們同時種樹只是爲了提升效率。

相關文章
相關標籤/搜索