日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Grizzly NIO框架 理論篇 【3】

系統 2286 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條評論
主站蜘蛛池模板: 营山县| 林芝县| 昭平县| 百色市| 泸定县| 华宁县| 二连浩特市| 泊头市| 定襄县| 大兴区| 大理市| 广昌县| 南昌县| 霸州市| 桐梓县| 诸城市| 洪湖市| 抚宁县| 双峰县| 克拉玛依市| 南华县| 建宁县| 汕尾市| 房产| 扬州市| 汝城县| 乌什县| 方山县| 远安县| 缙云县| 连平县| 南通市| 伊金霍洛旗| 西平县| 漳平市| 富宁县| 东方市| 莱州市| 大洼县| 那曲县| 苍南县|