NIO服務器線程優化

現有線程分析

每個客戶端都有讀寫兩個線程,加上selector的線程以及轉發、等待連接線程等,可見線程是非常多的。

線程優化後的模型

  • 減少線程數量,每個客戶端不再開讀和寫線程,而是開整體的讀線程池和寫線程池。
  • ByteBuffer也不再爲每個客戶端都開闢一個,而是使用統一的ByteBuffer。
  • 異步線程採用鎖(AtomicBoolean)實現數據同步

運行環境

 IDEA

目錄結構

  • 多模塊項目
  • lib-clink --工具包

         core --核心類包

            Connector --客戶端連接類

            IoArgs --Buffer封裝類

            IoContext --上下文類,統籌

            IoProvider --IO方法接口,即數據收發方法接口

            Receive --接收接口

            Sender --發送接口

       utils --基本工具包

          ByteUtils --byte數據的工具類

          CloseUtils  --關閉操作工具類

       Impl --方法使用接口包

          IoSelectorProvider --IoProvider的實現類

          SocketChannelAdapter --數據收發具體實現類

       Clink --clink總類

  • sample-client --客戶端

       bean --數據格式封裝包

          ServerInfo  --服務器信息封裝類

       Client --客戶端啓動總類

       TCPClient --TCP數據發送類

       UDPSearcher --UDP搜索類

  • sample-foo --協議包

       constants --協議規定包

          TCPConstants --TCP協議規定端口等

          UDPConstants --UDP協議規定端口等

  • sample-server --服務端

       handle

          ClientHandler --客戶端線程類

       Server --服務器啓動總類

       TCPServer --TCP服務端

       UDPProvider --UDP接收廣播回送消息類

代碼

註釋也在裏邊了

鏈接: 百度網盤 提取碼: yb3b 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章