根本區別:算法
進程是操做系統資源分配的基本單位,線程是任務調度和執行的基本單位數據庫
開銷方面:編程
每一個進程都有本身獨立的代碼和數據空間,程序之間的切換開銷較大。網絡
線程能夠看做是輕量級的進程,同一類線程共享代碼和數據空間,每一個線程都有本身獨立的運行棧和程序計數器,線程之間開銷小。數據結構
所處環境:多線程
一個操做系統能同時運行多個進程(程序)。架構
在一個進程中,能夠有多個線程同時執行。併發
內存分配方面:異步
系統在運行的時候會爲每一個進程分配不一樣的內存空間。高併發
對線程而言,系統不會爲線程分配內存(線程使用的資源,來自於其所屬進程的資源),線程組之間只能共享資源。
包含關係:
沒有線程的進程能夠看做是單線程。一個進程能夠包含多個線程
線程是進程的一部分,因此線程也稱爲輕量級進程
併發:
指應用能交替執行不一樣的任務,相似於多線程的原理。
並行:
指應用可以同時執行不一樣的任務
一般是用來形容一次方法調用。
同步:
必須等方法調用返回之後,才能繼續調用
異步:
更像是一個消息的傳遞,調用者沒必要等待該方法的調用完成,能夠繼續執行後面相關的調用。
高併發,是指短期內能同時並行處理不少請求和訪問。
好比,12306搶票和淘寶雙11活動。
想要系統可以適應高併發狀態,則須要全面優化,包括:硬件、網絡、系統架構、開發語言選取、數據結構的運用、算法優化、數據庫優化。而多線程只是其中解決方法的一種。
多線程在解決高併發問題中起到的做用只是:
使計算機的資源在每一時刻都能達到最大的利用率,不至於浪費計算機資源使其閒置。
高併發不等於多線程
多線程對應的CPU,高併發對應的是訪問請求。
能夠單線程處理多有的訪問請求,也能夠多線程同時處理訪問請求。
多線程不必定只有在併發的時候纔用到。多線程主要是爲了不一個線程過載影響效率,多線程也能夠將單任務截取爲多段同時進行,這種狀況的多線程並非爲了處理併發。
比如植樹節種樹,每一個人至關於一個線程,不少人至關於多個線程,你們同時種樹只是爲了提升效率。