什么場景需要使用多線程?
場景一:一個(gè)業(yè)務(wù)邏輯有很多次的循環(huán),每次循環(huán)之間沒有影響,比如驗(yàn)證1萬條url路徑是否存在,正常情況要循環(huán)1萬次,逐個(gè)去驗(yàn)證每一條URL,這樣效率會(huì)很低,假設(shè)驗(yàn)證一條需要1分鐘,總共就需要1萬分鐘,有點(diǎn)恐怖。這時(shí)可以用多線程,將1萬條URL分成50等份,開50個(gè)線程,沒個(gè)線程只需驗(yàn)證200條,這樣所有的線程執(zhí)行完是遠(yuǎn)小于1萬分鐘的。
場景二:需要知道一個(gè)任務(wù)的執(zhí)行進(jìn)度,比如我們常看到的進(jìn)度條,實(shí)現(xiàn)方式可以是在任務(wù)中加入一個(gè)整型屬性變量(這樣不同方法可以共享),任務(wù)執(zhí)行一定程度就給變量值加1,另外開一個(gè)線程按時(shí)間間隔不斷去訪問這個(gè)變量,并反饋給用戶。
總之使用多線程就是為了充分利用cpu的資源,提高程序執(zhí)行效率,當(dāng)你發(fā)現(xiàn)一個(gè)業(yè)務(wù)邏輯執(zhí)行效率特別低,耗時(shí)特別長,就可以考慮使用多線程。不過CPU執(zhí)行哪個(gè)線程的時(shí)間和順序是不確定的,即使設(shè)置了線程的優(yōu)先級(jí),因此使用多線程的風(fēng)險(xiǎn)也是比較大的,會(huì)出現(xiàn)很多預(yù)料不到的問題,一定要多熟悉概念,多構(gòu)造不同的場景去測試才能夠掌握!