怎麼使用多線程?咱們必須先從什麼狀況下能用多線程,什麼狀況下不能用多線程提及。多線程
常見的多線程模型,對於每一個處理任務創建一個線程去處理,即Request Per Thread
這個傳統的多線程模型能夠針對3個場景出現的問題:
1. 對於每一個鏈接創建一個線程
這個模型,創建的線程數即鏈接數會受到操做系統的進程空間限制,建立的鏈接個數也會有限制。
2. 對於計算密集型,每一個計算創建一個線程
線程若是超過了CPU同時並行運行的數量時,線程之間的上下文切換的開銷將會加大,吞吐量則會降低。
3. 若是對於IO密集型,則徹底沒有必要用多線程,使用多線程只會使線程同時阻塞在IO上併發
多線程適合既有CPU操做,又有IO操做的場景異步
對於線程能夠分爲三類:高併發
常規的模型:使用專用處理用戶請求的IO線程去處理高併發的用戶請求,把請求經過隊列的形式進行保存,用適合CPU並行數量的線程池從隊列裏獲取請求去執行,最後若是須要進行本地IO讀寫,則須要使用單獨的IO線程去讀寫本地文件。操作系統