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