多執行緒的應用場景

2021-07-31 20:19:28 字數 1482 閱讀 7629

通俗的解釋一下多執行緒先:

多執行緒用於堆積處理,就像乙個大土堆,乙個推土機很慢,那麼10個推土機一起來處理,當然速度就快了,不過由於位置的限制,如果20個推土機,那麼推土機之間會產生相互的避讓,相互摩擦,相互擁擠,反而不如10個處理的好,所以,多執行緒處理,執行緒數要開的恰當,就可以提高效率。

多執行緒使用的目的:

1、  吞吐量:做web,容器幫你做了多執行緒,但是它只能幫你做請求層面的,簡單的說,就是乙個請求乙個執行緒(如struts2,是多執行緒的,每個客戶端請求建立乙個例項,保證執行緒安全),或多個請求乙個執行緒,如果是單執行緒,那只能是處理乙個使用者的請求

2、  伸縮性:通過增加cpu核數來提公升效能。

多執行緒的使用場景:

1、  常見的瀏覽器、web服務(現在寫的web是中介軟體幫你完成了執行緒的控制),web處理請求,各種專用伺服器(如遊戲伺服器)

2、  servlet多執行緒

4、  資料庫用到的多執行緒

5、  分布式計算

6、  tomcat,tomcat內部採用多執行緒,上百個客戶端訪問同乙個web應用,tomcat接入後就是把後續的處理扔給乙個新的執行緒來處理,這個新的執行緒最後呼叫我們的servlet程式,比如doget或者***ost方法

7、  後台任務:如定時向大量(100w以上)的使用者傳送郵件;定期更新配置檔案、任務排程(如quartz),一些監控用於定期資訊採集

8、  自動作業處理:比如定期備份日誌、定期備份資料庫

9、  非同步處理:如發微博、記錄日誌

10、             頁面非同步處理:比如大批量資料的核對工作(有10萬個手機號碼,核對哪些是已有使用者)

11、             資料庫的資料分析(待分析的資料太多),資料遷移

12、             多步驟的任務處理,可根據步驟特徵選用不同個數和特徵的執行緒來協作處理,多工的分割,由乙個主線程分割給多個執行緒完成

13、             desktop應用開發,乙個費時的計算開個執行緒,前台加個進度條顯示

14、             swing程式設計

舉乙個小栗子:乙個文字檔案有100m,全是字串,我要執行切分字串,每達到n長度便執行切腹,最後求切分完成的字串的集合

多執行緒處理:

專門設定乙個執行緒執行載入資料的操作,此時,如果載入的資料達到乙個設定值,啟動乙個切線程處理,如此繼續,多個切分字串的執行緒能夠併發執行,cpu的利用率提高了(檔案傳輸的過程中沒有占用處理器,而可以將載入的部分資料分配給切分執行緒,占用處理器來執行任務)

總結:單執行緒處理,檔案載入的過程中,處理器一直空閒,但也被加入到總執行時間之內,序列執行切分總時間,等於每切分乙個時間*切分後字串的個數,執行程式,估計等幾分鐘能處理完就不錯了

多執行緒處理,檔案載入過程與拆分過程,拆分過程與拆分過程,都存在併發——檔案載入的過程中就執行了切分任務,切分任務執行過程中多執行緒並行處理,總消耗時間能比單執行緒提高很多,甚至幾個數量級都不止。

多執行緒的應用場景

多執行緒用於堆積處理,就像乙個大土堆,乙個推土機很慢,那麼10個推土機一起來處理,當然速度就快了,不過由於位置的限制,如果20個推土機,那麼推土機之間會產生相互的避讓,相互摩擦,相互擁擠,反而不如10個處理的好,所以,多執行緒處理,執行緒數要開的恰當,就可以提高效率。多執行緒使用的目的 1 吞吐量 ...

java多執行緒應用場景

多執行緒是基於乙個程序的多個執行過程。多執行緒貌似是提高了處理機的處理速度。實際是這樣麼?假設我們要做一萬次for迴圈,有十個執行緒,每個執行緒做1000次。那麼多執行緒會比單執行緒執行的快麼。針對單核cpu來說,單執行緒是最快的。因為多執行緒並不是真正意義上的多個一起執行。而是每個程序都在一定時間...

多執行緒使用場景

newcachedthreadpool 建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們。對於執行很多短期非同步任務的程式而言,這些執行緒池通常可提高程式效能。呼叫 execute 將重用以前構造的執行緒 如果執行緒可用 如果現有執行緒沒有可用的,則建立乙個新執行緒並...