Java多線程的應(yīng)用場(chǎng)景和應(yīng)用目的實(shí)例分析,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、新興網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、新興網(wǎng)絡(luò)營(yíng)銷、新興企業(yè)策劃、新興品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供新興建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:jinyejixie.com
通俗的解釋一下多線程先:
多線程用于堆積處理,就像一個(gè)大土堆,一個(gè)推土機(jī)很慢,那么10個(gè)推土機(jī)一起來處理,當(dāng)然速度就快了,不過由于位置的限制,如果20個(gè)推土機(jī),那么推土機(jī)之間會(huì)產(chǎn)生相互的避讓,相互摩擦,相互擁擠,反而不如10個(gè)處理的好,所以,多線程處理,線程數(shù)要開的恰當(dāng),就可以提高效率。
多線程使用的目的:
1、吞吐量:做WEB,容器幫你做了多線程,但是它只能幫你做請(qǐng)求層面的,簡(jiǎn)單的說,就是一個(gè)請(qǐng)求一個(gè)線程(如struts2,是多線程的,每個(gè)客戶端請(qǐng)求創(chuàng)建一個(gè)實(shí)例,保證線程安全),或多個(gè)請(qǐng)求一個(gè)線程,如果是單線程,那只能是處理一個(gè)用戶的請(qǐng)求。
2、伸縮性:通過增加CPU核數(shù)來提升性能。
多線程的使用場(chǎng)景:
1、常見的瀏覽器、Web服務(wù)(現(xiàn)在寫的web是中間件幫你完成了線程的控制),web處理請(qǐng)求,各種專用服務(wù)器(如游戲服務(wù)器)
2、servlet多線程
3、FTP下載,多線程操作文件
4、數(shù)據(jù)庫(kù)用到的多線程
5、分布式計(jì)算
6、tomcat,tomcat內(nèi)部采用多線程,上百個(gè)客戶端訪問同一個(gè)WEB應(yīng)用,tomcat接入后就是把后續(xù)的處理扔給一個(gè)新的線程來處理,這個(gè)新的線程最后調(diào)用我們的servlet程序,比如doGet或者dpPost方法
7、后臺(tái)任務(wù):如定時(shí)向大量(100W以上)的用戶發(fā)送郵件;定期更新配置文件、任務(wù)調(diào)度(如quartz),一些監(jiān)控用于定期信息采集
8、自動(dòng)作業(yè)處理:比如定期備份日志、定期備份數(shù)據(jù)庫(kù)
9、異步處理:如發(fā)微博、記錄日志
10、頁(yè)面異步處理:比如大批量數(shù)據(jù)的核對(duì)工作(有10萬個(gè)手機(jī)號(hào)碼,核對(duì)哪些是已有用戶)
11、數(shù)據(jù)庫(kù)的數(shù)據(jù)分析(待分析的數(shù)據(jù)太多),數(shù)據(jù)遷移
12、多步驟的任務(wù)處理,可根據(jù)步驟特征選用不同個(gè)數(shù)和特征的線程來協(xié)作處理,多任務(wù)的分割,由一個(gè)主線程分割給多個(gè)線程完成
13、desktop應(yīng)用開發(fā),一個(gè)費(fèi)時(shí)的計(jì)算開個(gè)線程,前臺(tái)加個(gè)進(jìn)度條顯示
14、swing編程
舉一個(gè)小栗子:
一個(gè)文本文件有100M,全是字符串,我要執(zhí)行切分字符串,每達(dá)到N長(zhǎng)度便執(zhí)行切腹,最后求切分完成的字符串的集合。
單線程處理:
讀取文本文件數(shù)據(jù),掃描全部數(shù)據(jù),一個(gè)一個(gè)的切分,最后消耗時(shí)間=文件傳輸時(shí)間(文本數(shù)據(jù)加載到內(nèi)存)+切分過程消耗
多線程處理:
專門設(shè)置一個(gè)線程執(zhí)行加載數(shù)據(jù)的操作,此時(shí),如果加載的數(shù)據(jù)達(dá)到一個(gè)設(shè)定值,啟動(dòng)一個(gè)切線程處理,如此繼續(xù),多個(gè)切分字符串的線程能夠并發(fā)執(zhí)行,CPU的利用率提高了(文件傳輸?shù)倪^程中沒有占用處理器,而可以將加載的部分?jǐn)?shù)據(jù)分配給切分線程,占用處理器來執(zhí)行任務(wù))
單線程處理,文件加載的過程中,處理器一直空閑,但也被加入到總執(zhí)行時(shí)間之內(nèi),串行執(zhí)行切分總時(shí)間,等于每切分一個(gè)時(shí)間*切分后字符串的個(gè)數(shù),執(zhí)行程序,估計(jì)等幾分鐘能處理完就不錯(cuò)了。
多線程處理,文件加載過程與拆分過程,拆分過程與拆分過程,都存在并發(fā)——文件加載的過程中就執(zhí)行了切分任務(wù),切分任務(wù)執(zhí)行過程中多線程并行處理,總消耗時(shí)間能比單線程提高很多,甚至幾個(gè)數(shù)量級(jí)都不止。
看完上述內(nèi)容,你們掌握J(rèn)ava多線程的應(yīng)用場(chǎng)景和應(yīng)用目的實(shí)例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章名稱:Java多線程的應(yīng)用場(chǎng)景和應(yīng)用目的實(shí)例分析
網(wǎng)站路徑:http://jinyejixie.com/article8/podeip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、商城網(wǎng)站、自適應(yīng)網(wǎng)站、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)