什么樣的業務場景適合用多線程?
首先了解下什么是多線程吧!多線程就是“人海戰術”,伴隨著摩爾定律的失效(單核心的計算能力不能再成倍的增長,而改為橫向擴展),CPU變為了多核心的模式,而每一個CPU在同一時間能處理一個線程,也就是說同一時間線程的執行數可以為CPU核心數(超線程不討論)!效率為以前單核心的N倍!
JAVA這門編程語言,可謂是讓多線程技術變得老生常談,那么多線程使用在什么地方呢?
1,web服務器:web服務器的請求數往往是非常大的,而且自從有了HTTP1.1之后,TCP默認是長連接模式,一般像tomcat這樣的服務器會開多個線程保持與客戶端的連接,所以需要多線程!
2,異步調用:比如電商平臺,在主線程處理完訂單等主業務之后,需要發短信,郵件等非主要的業務代碼,這個時候可以新起一個線程,異步調用,而主線程可以直接返回,避免長時間的等待!
3,上傳下載大文件處理:比如迅雷,如果是單線程,那么同一時候,它就只能寫一個下載任務的數據,但是多線程就可以同時進行更多任務!
4,分布式計算:比如1+2+...+100000,你可以分為十個任務,然后匯總即可,比單線程可以省大約9/10的時間!
還有更多場景可以適用于多線程環境,具體問題具體分析!
但是多線程其實絕對是魔鬼,從jdk中的并發包就可見端倪,不管是synchronize,lock,threadlocal,線程池,countbatchdown,forkjoin,future,callable,valatile哪一個多線程的關鍵字,都可以讓我們JAVA編程人員生不如死!
只能說不到萬不得已,不要盲目的使用多線程,比如redis就能靠著單線程一枝獨秀,linux之父Linus Tonvard說過:忘掉那該死的并發吧!可見這個多線程多么的不可取,只是如果我們JAVA程序員如果不會多線程,應該就失業了吧!
反正不管多線程有多痛苦,以后我還是會發多線程的技術分享的,敬請關注!