自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java多線程的應用場景和應用目的舉例

開發(fā) 后端
多線程用于堆積處理,就像一個大土堆,一個推土機很慢,那么10個推土機一起來處理,當然速度就快了,不過由于位置的限制,如果20個推土機,那么推土機之間會產(chǎn)生相互的避讓,相互摩擦,相互擁擠,反而不如10個處理的好,所以,多線程處理,線程數(shù)要開的恰當,就可以提高效率。

[[224658]]

通俗的解釋一下多線程先:

多線程用于堆積處理,就像一個大土堆,一個推土機很慢,那么10個推土機一起來處理,當然速度就快了,不過由于位置的限制,如果20個推土機,那么推土機之間會產(chǎn)生相互的避讓,相互摩擦,相互擁擠,反而不如10個處理的好,所以,多線程處理,線程數(shù)要開的恰當,就可以提高效率。

多線程使用的目的:

1、吞吐量:做WEB,容器幫你做了多線程,但是它只能幫你做請求層面的,簡單的說,就是一個請求一個線程(如struts2,是多線程的,每個客戶端請求創(chuàng)建一個實例,保證線程安全),或多個請求一個線程,如果是單線程,那只能是處理一個用戶的請求。

2、伸縮性:通過增加CPU核數(shù)來提升性能。

多線程的使用場景:

1、常見的瀏覽器、Web服務(現(xiàn)在寫的web是中間件幫你完成了線程的控制),web處理請求,各種專用服務器(如游戲服務器)

2、servlet多線程

3、FTP下載,多線程操作文件

4、數(shù)據(jù)庫用到的多線程

5、分布式計算

6、tomcat,tomcat內(nèi)部采用多線程,上百個客戶端訪問同一個WEB應用,tomcat接入后就是把后續(xù)的處理扔給一個新的線程來處理,這個新的線程最后調用我們的servlet程序,比如doGet或者dpPost方法

7、后臺任務:如定時向大量(100W以上)的用戶發(fā)送郵件;定期更新配置文件、任務調度(如quartz),一些監(jiān)控用于定期信息采集

8、自動作業(yè)處理:比如定期備份日志、定期備份數(shù)據(jù)庫

9、異步處理:如發(fā)微博、記錄日志

10、頁面異步處理:比如大批量數(shù)據(jù)的核對工作(有10萬個手機號碼,核對哪些是已有用戶)

11、數(shù)據(jù)庫的數(shù)據(jù)分析(待分析的數(shù)據(jù)太多),數(shù)據(jù)遷移

12、多步驟的任務處理,可根據(jù)步驟特征選用不同個數(shù)和特征的線程來協(xié)作處理,多任務的分割,由一個主線程分割給多個線程完成

13、desktop應用開發(fā),一個費時的計算開個線程,前臺加個進度條顯示

14、swing編程

舉一個小栗子:

一個文本文件有100M,全是字符串,我要執(zhí)行切分字符串,每達到N長度便執(zhí)行切腹,最后求切分完成的字符串的集合。

單線程處理:

讀取文本文件數(shù)據(jù),掃描全部數(shù)據(jù),一個一個的切分,最后消耗時間=文件傳輸時間(文本數(shù)據(jù)加載到內(nèi)存)+切分過程消耗

多線程處理:

專門設置一個線程執(zhí)行加載數(shù)據(jù)的操作,此時,如果加載的數(shù)據(jù)達到一個設定值,啟動一個切線程處理,如此繼續(xù),多個切分字符串的線程能夠并發(fā)執(zhí)行,CPU的利用率提高了(文件傳輸?shù)倪^程中沒有占用處理器,而可以將加載的部分數(shù)據(jù)分配給切分線程,占用處理器來執(zhí)行任務)

總結:

單線程處理,文件加載的過程中,處理器一直空閑,但也被加入到總執(zhí)行時間之內(nèi),串行執(zhí)行切分總時間,等于每切分一個時間*切分后字符串的個數(shù),執(zhí)行程序,估計等幾分鐘能處理完就不錯了。

 

多線程處理,文件加載過程與拆分過程,拆分過程與拆分過程,都存在并發(fā)——文件加載的過程中就執(zhí)行了切分任務,切分任務執(zhí)行過程中多線程并行處理,總消耗時間能比單線程提高很多,甚至幾個數(shù)量級都不止。 

責任編輯:龐桂玉 來源: Java團長
相關推薦

2012-10-23 09:32:07

2011-05-17 15:24:18

Shibboleth認證

2015-08-03 13:36:40

Docker技術優(yōu)勢應用場景

2022-09-05 14:46:01

元宇宙區(qū)塊鏈人工智能

2021-03-01 08:51:32

NB-IoT物聯(lián)網(wǎng)IOT

2021-09-02 18:47:02

redis存儲中間件Remote Dict

2010-12-21 14:21:36

線程C#

2015-08-04 17:45:54

Docker應用

2016-10-21 15:07:11

2014-12-10 10:36:23

IaaS云應用場景

2021-06-04 15:45:43

XR虛擬現(xiàn)實虛擬經(jīng)濟

2019-04-10 15:43:12

SDN場景網(wǎng)絡架構

2021-12-24 10:24:10

零信任

2024-03-12 10:36:06

函數(shù)指針代碼

2010-08-31 19:45:26

DHCP server

2019-12-30 10:40:31

GPU技術應用

2020-02-12 14:42:00

GPU技術關鍵參數(shù)應用場景

2012-03-29 15:15:49

Java

2015-03-03 12:21:51

數(shù)據(jù)模型NoSQL數(shù)據(jù)庫應用

2009-08-18 09:22:47

應用場景C#分部方法
點贊
收藏

51CTO技術棧公眾號