麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

傳統Socket IO與NIO的比較

2019-11-11 07:47:51
字體:
來源:轉載
供稿:網友

傳統Socket IO特點

1、傳統IO有兩個阻塞點,一個是接收客戶端的阻塞點,另外一個是客戶連接后接收消息的阻塞點

2、在單線程下,一個Server只能為一個客戶端服務,其他客戶端想連接服務端必須等待前一個客戶端釋放掉。

3、在多線程下,一個Server可以為多個客戶端服務,每來一個客戶端就給客戶端分配一個線程,這樣消耗的資源太多,類比server是一個餐廳,一個線程就是一個服務員,每來一個客人就安排一個服務員專門為其服務,如果客人多了,成本就高了。

這里寫圖片描述

NIO特點

1、NIO主要有ServerSocketChannel,Selector,SocketChannel,SelectionKey幾個類組成

2、NIO是單線程的

3、只有一個阻塞點

4,、如果拿NIO比作成一個餐廳的話,ServerSocketChannel就相當于整個餐廳,SocketChannel相當于客人,Selector相當于服務員,SelectionKey相當于服務種類(迎接客人,點餐等)

A、餐廳開張時,會先打開大門,這里的大門相當于端口號,serverChannel.configureBlocking(false); //設置為非阻塞,相當于服務員不一定要站在大門口 serverChannel.socket().bind(new InetSocketAddress(port));//大門地址 this.selector = Selector.open();//服務員開始工作B、serverChannel.register(selector, SelectionKey.OP_ACCEPT);//告訴服務員要看著大門的情況,如果有客人來就要上去迎接C、Set<SelectionKey> keys = selector.selectedKeys();迭代服務種類,此時服務員時刻都在監控著大門,一旦大門有客人進來,他就知道D、如果Set里有值了,說明有客人來或者有客人點餐了,先判斷下這個值是客人來了還是點餐了,第一次來的肯定是客人來了E、key.isAcceptable() 表示客人從大門進來了,SocketChannel channel = server.accept(); 獲得了這個客人的信息,channel.register(selector, SelectionKey.OP_READ);表示客人進來了,那就要叫他坐下來,這是服務員就要記住這個客人隨時都要點餐了F、key.isReadable() 表示客戶開始點餐,客人把點餐的信息告訴服務員。

這里寫圖片描述

傳統IO與NIO的主要區別就是NIO不要一直阻塞著,一旦有消息過來會主動告訴服務端,另外一個是NIO一個單線程可以處理N個客戶端。


上一篇:Thrift框架介紹

下一篇:位運算例題2

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲欧美国产精品va在线观看 | 国产午夜亚洲精品理论片大丰影院 | 亚洲精品7777 | 日本精品久久久久久草草 | 一级黄色毛片子 | 一级大黄毛片免费观看 | 羞羞答答影院 | 99国产精品自拍 | 日本在线高清 | 欧美日韩在线免费观看 | 国产成人高潮免费观看精品 | 国产69久久精品成人看 | 精品国产96亚洲一区二区三区 | 在线看免费观看av | 日本中文字幕高清 | 欧美不卡| 在线看一级片 | 精品国产91久久久久久 | 国产二区三区视频 | 国产自在自线午夜精品视频在 | 精品亚洲视频在线 | 欧美视频黄色 | 久久综合给合久久狠狠狠97色69 | 久久久久二区 | 欧美国产精品一区二区 | 蜜桃欧美性大片免费视频 | 欧美性激情视频 | 国产免费一区视频 | 欧美一级片在线 | 亚洲视频观看 | 久久99精品久久久久久国产越南 | 国产精品久久久久久久久久尿 | 亚洲人成网站免费播放 | 国产精品久久久久久影院8一贰佰 | 国产免费一区二区三区 | 欧美日韩高清在线观看 | 成人午夜精品久久久久久久蜜臀 | 国产精品久久久久久久久久久久久久久久 | 国产chinesehd精品91 | xnxx18日本 | 九九视频精品在线观看 |