# 概述
為什么使用線程?從c開始,任何一門高級語言的默認執行順序是“按照編寫的代碼的順序執行”,日常開發過程中寫的業務邏輯,但凡不涉及并發的,都是讓一個任務順序執行以確保得到想要的結果。
但是,當你的任務需要處理的業務比較多時,且這些業務前后之間沒有依賴(比如, a執行的過程中b也可以執行,b沒有必要必須等待a執行完畢再去執行),那么此時,我們可以將一個任務拆分成多個小任務。
<br>
例如,任務a負責接收鍵盤的輸入,b負責將一些參數及計算提前做好(假設計算量比較大),c負責將a的輸入和b的結果做和。此時,abc順序執行的話,如果a的輸入被阻塞了即正在等待用戶輸入,b就無法執行,而此時cpu處于空置狀態(假設是單cpu且單核),明顯效率不高。
<br>
換一個思路,假如:abc分開成為三個任務,a的輸入被阻塞了,那么此時就把b交給cpu去執行,待用戶輸入結果之后,b已經將計算結果輸出給了c,此時,用戶提交后,c便立即計算出了結果。
<br>
> 綜上:多線程解決的是并發的問題,目的是使任務執行效率更高,實現前提是“阻塞”。它們看上去時同時在執行的,但實際上只是分時間片使用cpu而已。