<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Netty支持哪些I/O模式?

          共 1012字,需瀏覽 3分鐘

           ·

          2020-12-14 09:38


          ? 點擊上方“JavaEdge”,關注公眾號

          設為“星標”,好文章不錯過!

          1 經典I/O模式


          BIO (阻塞I/O)JDK1.4前
          NIO (非阻塞 I/O)JDK1.4 (2002 年,java.nio 包)
          AIO(異步 I/O)JDK1.7 (2011 年)



          1.2 對比概念


          阻塞與非阻塞


          數據就緒前要不要等待?

          • 阻塞

            沒有數據傳過來時,讀會阻塞直到有數據;緩沖區(qū)滿時,寫操作也會阻塞

          • 非阻塞

            直接返回

          同步與異步


          數據就緒后,數據操作誰完成?

          • 需要自己去讀是同步

          • 數據就緒直接讀好再回調給程序是異步

          2 Netty 對三種 IO 的支持變遷


          劃線的已不再支持了哦!




          為什么廢除阻塞I/0 (BIO/OIO) ?


          連接數高的情況下:阻塞 -> 耗資源、效率低。
          阻塞意味著等待,等待就會一直占用該線程,當連接數高時,大多線程又在等待,就會耗盡系統(tǒng)的線程資源。



          為什么刪掉已經做好的AIO支持?


          • Windows實現成熟,但其很少用做服務器

          • Linux常用做服務器,但其AlO實現不夠成熟

          • Linux下AIO相比較NIO的性能提升不明顯

          所以 netty 也是聯系實際情況才有選擇地支持高性能的 IO 模式。



          為什么 Netty 支持多種實現?


          通用NIO實現(Common)在Linux下也是epoll,但Netty依舊選擇自己實現,因為更好:

          Netty提供更多可控參數:

          • JDK的NIO默認實現是水平觸發(fā)

          • Netty 是邊緣觸發(fā)(默認)和水平觸發(fā),且可切換


          Netty實現的垃圾回收更少、性能更好



          NIO 一定優(yōu)于 BIO?


          BIO 代碼簡單且在特定場景:連接數少,并發(fā)度低,BIO 性能不輸NIO。當然考慮業(yè)務發(fā)展后期都是復雜場景了,所以 Netty 只考慮 NIO。



          往期推薦


          大廠如何解決數值精度/舍入/溢出問題

          大廠數據庫事務實踐-事務生效就能保證正確回滾?

          線上問題事跡(一)數據庫事務居然都沒生效?

          硬核干貨:HTTP超時、重復請求必見坑點及解決方案

          給大忙人們看的Java NIO教程之Channel





          目前交流群已有?800+人,旨在促進技術交流,可關注公眾號添加筆者微信邀請進群


          喜歡文章,點個“在看、點贊、分享”素質三連支持一下~

          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕视频免费 | 国产又大又黄又硬又粗视频 | 中文字幕在线观看一区二区 | 欧美天天干天天女人 | 91久久人澡人人添人人爽欧美 |