多線程在實(shí)際項(xiàng)目中如何應(yīng)用 多線程使用場景?
多線程使用場景?多線程后臺任務(wù)一般來說,我們需要在后臺處理的任務(wù),通常會使用定時器來啟動后臺線程處理,比如我需要定期修改的一些數(shù)據(jù)表的狀態(tài),我們搜索引擎中的數(shù)據(jù)需要定期采集,統(tǒng)計(jì)信息需要定期生成,上傳
多線程使用場景?
多線程后臺任務(wù)
一般來說,我們需要在后臺處理的任務(wù),通常會使用定時器來啟動后臺線程處理,比如我需要定期修改的一些數(shù)據(jù)表的狀態(tài),我們搜索引擎中的數(shù)據(jù)需要定期采集,統(tǒng)計(jì)信息需要定期生成,上傳的垃圾文件需要定期清理。
多線程異步處理任務(wù)
當(dāng)我們需要處理一個耗時的操作時,不要 如果不能立即知道結(jié)果,我們可以啟動后臺線程來異步處理耗時的操作,這樣可以改善用戶體驗(yàn)。比如我之前做的一個項(xiàng)目,需要上傳簡歷附件,后臺需要解析簡歷附件,保存在數(shù)據(jù)表中。由于處理多種格式,我們啟動了多線程異步處理,這樣用戶就不必等到我們的簡歷被解析后才能看到服務(wù)器的響應(yīng)。例如,當(dāng)用戶下載簡歷時,我們需要從數(shù)據(jù)表中的數(shù)據(jù)生成一個簡歷附件并發(fā)送給用戶 通過電子郵件發(fā)送到我的郵箱。該操作還可以啟動多線程異步處理。
多線程分布式計(jì)算
當(dāng)我們處理一個比較耗時的大任務(wù)時,可以把任務(wù)切割成幾個小任務(wù),然后啟動多個線程同時處理這些小任務(wù)。切數(shù)一般是根據(jù)我們服務(wù)器CPU的核數(shù),合理利用多核CPU的優(yōu)勢。比如下載操作可以使用多線程下載,提高下載速度;清理文件時,啟動多線程,按目錄并行處理等等。
作者:左半翼
鏈接:
來源:簡書
簡化書版權(quán)歸作者所有。任何形式的轉(zhuǎn)載請聯(lián)系作者授權(quán)并注明出處。
java電商項(xiàng)目,什么場景需要使用多線程?
場景1:在:,一個業(yè)務(wù)邏輯有許多周期,每個周期之間沒有影響。比如驗(yàn)證10000個url路徑的存在性,通常需要循環(huán)10000次來逐個驗(yàn)證每個URL,效率會非常低。假設(shè)驗(yàn)證一個需要1分鐘,總共需要1萬分鐘,有點(diǎn)嚇人。這時候可以用多線程把10000個URL分成50等份,開50個線程,不需要任何線程,只需要驗(yàn)證200個線程,這樣所有線程的執(zhí)行就遠(yuǎn)小于10000分鐘。
場景2 :需要知道一個任務(wù)的執(zhí)行進(jìn)度,比如我們經(jīng)??吹降倪M(jìn)度條。實(shí)現(xiàn)的方法是在任務(wù)中加入一個整數(shù)屬性變量(這樣就可以共享不同的方法),當(dāng)任務(wù)執(zhí)行到一定程度時變量值加1,每隔一段時間打開另一個線程連續(xù)訪問這個變量并反饋給用戶。
簡而言之,多線程就是用來充分利用cpu資源,提高程序執(zhí)行效率的。當(dāng)你發(fā)現(xiàn)一個業(yè)務(wù)邏輯效率特別低,耗時特別長的時候,可以考慮使用多線程。但是CPU執(zhí)行哪個線程的時間和順序是不確定的。即使設(shè)置了線程優(yōu)先級,使用多線程的風(fēng)險也比較大,會出現(xiàn)很多意想不到的問題,一定要熟悉。概念,構(gòu)造不同的場景來測試,才能掌握!