亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Grizzly NIO框架 理論篇 【3】

系統 2407 0

Transport Configuration (Transport 的 配置)

我們先從一個簡單的創建開始:
  1. final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
  2. final TCPNIOTransport transport = builder . build ();
這樣就創建了一個Transport,如果我們想建立服務端,接下來就是綁定端口和開啟服務:
  1. final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
  2. final TCPNIOTransport transport = builder . build ();
  3. try {
  4. // Bind server socket and start transport
  5. transport . bind ( 12345 );
  6. transport . start ();
  7. System . out . println ( "Press <enter> to exit..." );
  8. System . in . read ();
  9. } catch ( Exception e ){
  10. e . printStackTrace ();
  11. }
Systen.in.read()的作用還是不讓Main線程結束,因為transport創建的Selector線程或者Worker都是虛擬線程(虛擬線程什么特點網上有資料)。
按如上所述就開啟了端口為12345的一個服務端了。
?
如果我們需要創建客戶端,那么可以通過transport建立到某個地址+端口的連接:
  1. final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
  2. final TCPNIOTransport transport = builder . build ();
  3. Future < Connection > fc = transport . connect ( "127.0.0.1" , 12345 );
  4. Connection conn = fc . get ();
  5. conn . write ( message );
其中message的格式根據自定義的Filter而變化,如果是底層的,message就是一個Buffer。
接下來還是主要看下我常用的配置:
IOStrategy 這個之前有講解基本有如下幾個:
  1. builder . setIOStrategy ( WorkerThreadIOStrategy . getInstance ());
  2. builder . setIOStrategy ( SameThreadIOStrategy . getInstance ());
  3. builder . setIOStrategy ( SimpleDynamicNIOStrategy . getInstance ());
  4. builder . setIOStrategy ( LeaderFollowerNIOStrategy . getInstance ());
memoryManager 這個就是內存管理器:有Heap和ByteBuffer兩種。
processor
  1. FilterChainBuilder filterChainBuilder = FilterChainBuilder . stateless ();
  2. builder . setProcessor ( filterChainBuilder . build ());
這個一般設置FilterChain,我們可以在FilterChain里面添加自己的濾鏡,用于處理消息
readBufferSize 讀數據流的分配內存大小
writeBuffersSize 寫數據流的內存分配大小,一般可以根據工程而配置。
?
其他屬性都是用默認的,所以如果有了解可以查看官方英文的文檔。

Thread Pool Configuration

好了,基本使用已經學會,那么我們看看幾個參數的作用:
  1. final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
  2. final ThreadPoolConfig config = builder . getWorkerThreadPoolConfig ();
  3. config . setCorePoolSize ( 5 ). setMaxPoolSize ( 5 ). setQueueLimit (- 1 );
  4. final TCPNIOTransport transport = builder . build ();
queue 任務隊列
queueLimit 隊列最大容納的數量
threadFactory 線程工廠,用于創建Worker線程或其他線程。。。
poolName 線程池的名稱
priority The priority to be assigned to each thread. This will override any priority assigned by the specified ThreadFactory.
corePoolSize 初始線程數
maxPoolSize 最大線程數,-1表示無限大
keepAliveTime The maximum time a thread may stay idle and wait for a new task to execute before it will be released. Custom time units can be used.
transactionTimeout The maximum time a thread may be allowed to run a single task before interrupt signal will be sent. Custom time units can be used.





Grizzly NIO框架 理論篇 【3】


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 夜夜夜夜猛噜噜噜噜噜 | 亚洲另类第一页 | 日日干夜夜欢 | 九九久久国产精品 | 国产欧美亚洲三区久在线观看 | 中文欧美一级强 | 女人18毛片a级毛片免费视频 | 久久99精品视香蕉蕉 | 欧美成人在线免费 | 最新精品在线 | 中国护士一级毛片免费版本 | 国内精品免费久久久久妲己 | 国产免费a视频 | 国产在线一区二区 | 国产区91 | 日日躁夜夜躁狠狠天天 | 欧美伊人久久 | a毛片久久免费观看 | 在线视频久草 | 依人九九 | 亚洲日本va | 亚洲视频 中文字幕 | 成人午夜在线观看国产 | 青青青爽国产在线视频 | 国产麻豆免费 | 亚洲久草在线 | 久草在线色站 | 波多野结衣xxxx性精品 | 在线观看自拍视频 | 精品哟哟哟国产在线观看不卡 | 在线免费观看国产精品 | 99精品国产福利在线观看 | 久久精品国产99国产精品澳门 | 曰本黄色录像 | 亚洲第成色999久久网站 | 亚洲精品久久久成人 | 91麻豆精品国产91久久久久久 | 国产精品免费久久久免费 | 久久九九免费 | 国产在线观看成人免费视频 | 亚洲欧洲日产国码二区首页 |