欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JavaNIO與傳統(tǒng)IO的區(qū)別是什么

本篇內(nèi)容介紹了“Java NIO與傳統(tǒng)IO的區(qū)別是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

遼源網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

傳統(tǒng)的socket IO中,需要為每個(gè)連接創(chuàng)建一個(gè)線程,當(dāng)并發(fā)的連接數(shù)量非常巨大時(shí),線程所占用的棧內(nèi)存和CPU線程切換的開(kāi)銷將非常巨大。使用NIO,不再需要為每個(gè)線程創(chuàng)建單獨(dú)的線程,可以用一個(gè)含有限數(shù)量線程的線程池,甚至一個(gè)線程來(lái)為任意數(shù)量的連接服務(wù)。由于線程數(shù)量小于連接數(shù)量,所以每個(gè)線程進(jìn)行IO操作時(shí)就不能阻塞,如果阻塞的話,有些連接就得不到處理,NIO提供了這種非阻塞的能力。

小量的線程如何同時(shí)為大量連接服務(wù)呢,答案就是就緒選擇。這就好比到餐廳吃飯,每來(lái)一桌客人,都有一個(gè)服務(wù)員專門為你服務(wù),從你到餐廳到結(jié)帳走人,這樣方式的好處是服務(wù)質(zhì)量好,一對(duì)一的服務(wù),VIP啊,可是缺點(diǎn)也很明顯,成本高,如果餐廳生意好,同時(shí)來(lái)100桌客人,就需要100個(gè)服務(wù)員,那老板發(fā)工資的時(shí)候得心痛死了,這就是傳統(tǒng)的一個(gè)連接一個(gè)線程的方式。

老板是什么人啊,精著呢。這老板就得捉摸怎么能用10個(gè)服務(wù)員同時(shí)為100桌客人服務(wù)呢,老板就發(fā)現(xiàn),服務(wù)員在為客人服務(wù)的過(guò)程中并不是一直都忙著,客人點(diǎn)完菜,上完菜,吃著的這段時(shí)間,服務(wù)員就閑下來(lái)了,可是這個(gè)服務(wù)員還是被這桌客人占用著,不能為別的客人服務(wù),用華為領(lǐng)導(dǎo)的話說(shuō),就是工作不飽滿。那怎么把這段閑著的時(shí)間利用起來(lái)呢。這餐廳老板就想了一個(gè)辦法,讓一個(gè)服務(wù)員(前臺(tái))專門負(fù)責(zé)收集客人的需求,登記下來(lái),比如有客人進(jìn)來(lái)了、客人點(diǎn)菜了,客人要結(jié)帳了,都先記錄下來(lái)按順序排好。每個(gè)服務(wù)員到這里領(lǐng)一個(gè)需求,比如點(diǎn)菜,就拿著菜單幫客人點(diǎn)菜去了。點(diǎn)好菜以后,服務(wù)員馬上回來(lái),領(lǐng)取下一個(gè)需求,繼續(xù)為別人客人服務(wù)去了。這種方式服務(wù)質(zhì)量就不如一對(duì)一的服務(wù)了,當(dāng)客人數(shù)據(jù)很多的時(shí)候可能需要等待。但好處也很明顯,由于在客人正吃飯著的時(shí)候服務(wù)員不用閑著了,服務(wù)員這個(gè)時(shí)間內(nèi)可以為其他客人服務(wù)了,原來(lái)10個(gè)服務(wù)員最多同時(shí)為10桌客人服務(wù),現(xiàn)在可能為50桌,60客人服務(wù)了。

這種服務(wù)方式跟傳統(tǒng)的區(qū)別有兩個(gè):

1、增加了一個(gè)角色,要有一個(gè)專門負(fù)責(zé)收集客人需求的人。NIO里對(duì)應(yīng)的就是Selector。

2、由阻塞服務(wù)方式改為非阻塞服務(wù)了,客人吃著的時(shí)候服務(wù)員不用一直侯在客人旁邊了。傳統(tǒng)的IO操作,比如read(),當(dāng)沒(méi)有數(shù)據(jù)可讀的時(shí)候,線程一直阻塞被占用,直到數(shù)據(jù)到來(lái)。NIO中沒(méi)有數(shù)據(jù)可讀時(shí),read()會(huì)立即返回0,線程不會(huì)阻塞。 

NIO中,客戶端創(chuàng)建一個(gè)連接后,先要將連接注冊(cè)到Selector,相當(dāng)于客人進(jìn)入餐廳后,告訴前臺(tái)你要用餐,前臺(tái)會(huì)告訴你你的桌號(hào)是幾號(hào),然后你就可能到那張桌子坐下了,SelectionKey就是桌號(hào)。當(dāng)某一桌需要服務(wù)時(shí),前臺(tái)就記錄哪一桌需要什么服務(wù),比如1號(hào)桌要點(diǎn)菜,2號(hào)桌要結(jié)帳,服務(wù)員從前臺(tái)取一條記錄,根據(jù)記錄提供服務(wù),完了再來(lái)取下一條。這樣服務(wù)的時(shí)間就被最有效的利用起來(lái)了。

“Java NIO與傳統(tǒng)IO的區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站欄目:JavaNIO與傳統(tǒng)IO的區(qū)別是什么
標(biāo)題URL:http://www.chinadenli.net/article18/pidcdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航品牌網(wǎng)站建設(shè)微信公眾號(hào)網(wǎng)站制作建站公司動(dòng)態(tài)網(wǎ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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化