日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Netty】Netty 入门案例分析 ( Netty 线程模型 | Netty 案例需求 | IntelliJ IDEA 项目导入 Netty 开发库 )

發(fā)布時間:2025/6/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Netty】Netty 入门案例分析 ( Netty 线程模型 | Netty 案例需求 | IntelliJ IDEA 项目导入 Netty 开发库 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、 Netty 線程模型
  • 二、 Netty 案例需求
  • 三、 IntelliJ IDEA 引入 Netty 包





一、 Netty 線程模型



1 . Netty 中的線程池 : Netty 中有兩組線程池 , 分別是 BossGroup 線程池 WorkerGroup 線程池 ;


① BossGroup 線程池 : 負(fù)責(zé)客戶端的連接 ;

② WorkerGroup 線程池 : 負(fù)責(zé)客戶端連接的數(shù)據(jù)讀寫 ;


顧名思義 , 這兩個線程池中存放線程 , 這兩個線程池是 NioEventLoopGroup 子類 , NioEventLoop 就是其中的線程 ;



2 . NIO 事件循環(huán)組 ( NioEventLoopGroup ) 簡介 :


① NioEventLoopGroup 基類 : BossGroup 和 WorkerGroup 都是 NioEventLoopGroup 的派生類 ;

② NioEventLoopGroup 作用 : 代表 NIO 事件循環(huán)組 , 這個組中有多個事件循環(huán) , 每個事件循環(huán)都是一個 NioEventLoop ;



3 . NIO 事件循環(huán) ( NioEventLoop ) 簡介 :


① NIO 事件循環(huán) ( NioEventLoop ) 本質(zhì) : 表示線程 , 在該線程中循環(huán)處理任務(wù) ;

② NIO 事件循環(huán) ( NioEventLoop ) 作用 : 每個 NIO 事件循環(huán) ( NioEventLoop ) 都有 Selector 監(jiān)聽相應(yīng)的客戶端請求事件 ;



4 . NIO 事件循環(huán)組 ( NioEventLoopGroup ) 與 NIO 事件循環(huán) ( NioEventLoop ) 對應(yīng)關(guān)系 : 在一個 NIO 事件循環(huán)組 ( NioEventLoopGroup ) 中可以有 多個 NIO 事件循環(huán) ( NioEventLoop ) , 在 Netty 中這個個數(shù)可以使用代碼指定 ;



5 . BossGroup 線程池中的線程 NioEventLoop 執(zhí)行步驟 :


① 監(jiān)聽連接 : 輪詢監(jiān)聽客戶端的 accept 連接請求事件 ;

② 處理流程 : 處理該 accept 客戶端連接事件 ;

  • 建立連接 : 建立服務(wù)器與該客戶端之間的連接 ;
  • 獲取通道 : 獲取 套接字通道 ( SocketChannel ) ;
  • 封裝通道 : 將 SocketChannel 封裝為 NioSocketChannel ;
  • 注冊通道 : 將 NioSocketChannel 注冊到 WorkerGroup 線程池中的某個 NioEventLoop 中的 Selector 上 ;

③ 任務(wù)隊列 : 處理任務(wù)隊列中的其它任務(wù) ;



6 . WorkerGroup 線程池中的線程 NioEventLoop 執(zhí)行步驟 :


① 監(jiān)聽數(shù)據(jù) : 輪詢監(jiān)聽客戶端的 讀 ( Read ) 寫 ( Write ) 數(shù)據(jù)事件 ;

② 處理流程 : 處理該 讀 ( Read ) 寫 ( Write ) 數(shù)據(jù) IO 事件 , 基于之前注冊的 NioSocketChannel 處理 IO 事件 ;

③ 任務(wù)隊列 : 處理任務(wù)隊列中的其它任務(wù) ;



7 . 管道 ( Pipeline ) : 管道 ( Pipeline ) 包含 通道 ( Channel ) , 通過 管道 ( Pipeline ) 可以獲取到對應(yīng)的 通道 ( Channel ) , 管道 ( Pipeline ) 中維護(hù)了很多 處理器 ( Handler ) ;



8 . 下圖是 Netty 的線程模型 :





二、 Netty 案例需求



需求 : 簡單的功能 ;


① 服務(wù)器端 : 監(jiān)聽 8888 端口 , 接收到客戶端消息后 , 將消息原路送回 ;

② 客戶端 : 向服務(wù)器發(fā)送 “Hello World” ;





三、 IntelliJ IDEA 引入 Netty 包



引入 Netty 包流程


1 . 打開工程結(jié)構(gòu) ( Project Structure ) 對話框 : 選擇 File 菜單 -> Project Structure 選項 ;


2 . 選擇導(dǎo)入方式 : 選擇 Modules 選項卡 , 右側(cè)選擇 Dependencies 選項卡 , 選擇右側(cè)的加號 , 點擊 2 Library… , 選擇 From Maven … 從 Maven 導(dǎo)入 Netty 庫 ;

3 . 搜索 Netty 庫 : 在彈出的對話框中輸入 io.netty:netty-all 內(nèi)容 , 然后點擊右側(cè)的放大鏡搜索按鈕 ( 搜索很長時間 ) , 選擇將依賴庫下載到工程的 lib 目錄下 , 同時下載源碼和文檔 ;

4 . 選擇一個 Netty 版本 : 選擇一個 Netty 版本 , 然后點擊 OK 按鈕 , 開始下載 , 下載速度很慢 ;

點擊 OK 按鈕后 , 開始下載 , 下載幾十分鐘 , 慢慢等 ;

5 . 配置庫 : 下載完成后 , 會彈出 Configure Library 界面 , 下面的 3 個 jar 包都選擇上 , 點擊 OK , 就會在目錄下生成 lib 目錄 , 該目錄下有 Netty 相關(guān)的依賴庫 , 文檔 , 源碼 等內(nèi)容 ;


6 . Netty 庫 : 工程目錄下的 lib 目錄中存放著 Netty 的依賴庫 , 文檔 , 源碼 ;

總結(jié)

以上是生活随笔為你收集整理的【Netty】Netty 入门案例分析 ( Netty 线程模型 | Netty 案例需求 | IntelliJ IDEA 项目导入 Netty 开发库 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。