<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 1. BIO、NIO和AIO的區別? BIO:Blocking IO,阻塞IO,java.io包下的各種流都是BIO的。BIO的交互方式是同步和阻塞的,一個線程在進行讀寫操作的時候就得一直阻塞到讀寫操作完成才能繼續運行,這個時候CPU就有大量的空閑時間(IO比較慢),嚴重影響系統的性能。 NIO:Non-blocking IO,非阻塞IO,JDK 1.4之后引入java.nio包,提供了Channel、Selector、Buffer等新的抽象結構,可以構建多路復用的、同步非阻塞的IO程序,性能更加高。 AIO:異步IO,JDK 1.7之后引入,NIO的升級版本,提供了異步非阻塞的IO操作方式,異步IO是基于事件和回調機制實現的,應用操作后會直接返回,不會阻塞在那里。當事件真正發生的時候就會調用回調函數通知主線程。 BIO面向流通信,NIO面向Channel通信。都可以是雙工的,并不是說Stream是單工的。 &nbsp; ## 2. NIO的組成? NIO主要有Channel、Selector、Buffer組成。 Buffer是一個緩沖區,可以在JVM heap內分配,或者在直接內存中分配,在直接內存中分配性能更加高。 Channel表示連接的通道,是雙向的,可讀可寫,不能直接訪問數據,只能與Buffer進行交互。 Selector多路復用器,可以使得一個線程單獨管理多個Channel,通過事件的機制,可以使得Selector監控多種事件的發生,并當事件發生時交由對應注冊的Channel處理。 Pipeline管道,兩個線程之間的單線數據連接。 &nbsp; ## 3. Netty特點 1. 高性能、異步事件驅動的NIO框架。 2. 避免epoll空輪詢造成CPU 100%運行。 3. 使用更加高效的ByteBuf替代JDK的ByteBuffer,同時采用池化技術使得ByteBuf能夠重用,充分利用內存。對于ByteBuf的回收不再需要JDK的垃圾回收,而是采用自定義的引用計數的方式進行回收。 4. 提供了對TCP傳輸的粘包和半包問題的各種解決方案,例如基于分割符(**DelimiterBasedFrameDecoder**)的、基于固定長度的(**FixedLengthFrameDecoder**)和基于預設長度(**LengthFieldBasedFrameDecoder**)的各種類。 &nbsp; ## 4. Netty的線程模型? Netty通過Reactor模型基于多路復用器接收并處理用戶請求,其內部實現了兩個線程池(其實是EventLoop = 單線程的線程池 + Selector):Boss線程池和Worker線程池。其中Boss線程池中的線程負責處理accept事件,而worker線程池中的線程負責處理read和writer事件,并將對應的事件交由Handler處理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看