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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EventLoopGroup 与Reactor 关联

發布時間:2024/4/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EventLoopGroup 与Reactor 关联 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們介紹了三種Reactor 的線程模型, 那么它們和NioEventLoopGroup 又有什么關系呢? 其實, 不同的設置NioEventLoopGroup 的方式就對應了不同的Reactor 的線程模型。

1、單線程模型,來看下面的應用代碼:

EventLoopGroup bossGroup = new NioEventLoopGroup(1); ServerBootstrap server = new ServerBootstrap(); server.group(bossGroup);

注意,我們實例化了一個NioEventLoopGroup,然后接著我們調用server.group(bossGroup)設置了服務器端的EventLoopGroup。有人可能會有疑惑;我記得在啟動服務器端的Netty 程序時, 需要設置bossGroup 和workerGroup,為何這里只設置一個bossGroup?其實原因很簡單,ServerBootstrap 重寫了group 方法:

public ServerBootstrap group(EventLoopGroup group) {return group(group, group); }

因此當傳入一個group 時,那么bossGroup 和workerGroup 就是同一個NioEventLoopGroup 了。這時,因為bossGroup 和workerGroup 就是同一個NioEventLoopGroup,并且這個NioEventLoopGroup 線程池數量只設置了1個線程,也就是說Netty 中的Acceptor 和后續的所有客戶端連接的IO 操作都是在一個線程中處理的。那么對應到Reactor 的線程模型中,我們這樣設置NioEventLoopGroup 時,就相當于Reactor 的單線程模型。

2、多線程模型,再來看下面的應用代碼:

EventLoopGroup bossGroup = new NioEventLoopGroup(128); ServerBootstrap server = new ServerBootstrap(); server.group(bossGroup);

從上面代碼中可以看出,我們只需要將bossGroup 的參數就設置為大于1 的數,其實就是Reactor 多線程模型。

3、主從線程模型,到這里相信大家都已經想到了, 實現主從線程模型的代碼如下:

EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup);

bossGroup 為主線程,而workerGroup 中的線程是CPU 核心數乘以2,因此對應的到Reactor 線程模型中,我們知道, 這樣設置的NioEventLoopGroup 其實就是Reactor 主從多線程模型。

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的EventLoopGroup 与Reactor 关联的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。