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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Netty学习四:Channel

發(fā)布時(shí)間:2023/12/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Netty学习四:Channel 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. Channel

Channel是Netty的核心概念之一,它是Netty網(wǎng)絡(luò)通信的主體,由它負(fù)責(zé)同對端進(jìn)行網(wǎng)絡(luò)通信、注冊和數(shù)據(jù)操作等功能。

1.1 工作原理

如上圖所示:

  • 一旦用戶端連接成功,將新建一個(gè)channel同該用戶端進(jìn)行綁定
  • channel從EventLoopGroup獲得一個(gè)EventLoop,并注冊到該EventLoop,channel生命周期內(nèi)都和該EventLoop在一起(注冊時(shí)獲得selectionKey)
  • channel同用戶端進(jìn)行網(wǎng)絡(luò)連接、關(guān)閉和讀寫,生成相對應(yīng)的event(改變selectinKey信息),觸發(fā)eventloop調(diào)度線程進(jìn)行執(zhí)行
  • 如果是讀事件,執(zhí)行線程調(diào)度pipeline來處理用戶業(yè)務(wù)邏輯

1.2 狀態(tài)轉(zhuǎn)換

如上圖所示,Channel包含注冊、活躍、非活躍和非注冊狀態(tài),在一般情況下是從注冊->活躍->非活躍->非注冊,但用戶可以從eventloop取消和重注冊channel,因此在此情況下活躍->非注冊->注冊

1.3 線程

多個(gè)channel可以注冊到一個(gè)eventloop上,所有的操作都是順序執(zhí)行的,eventloop會(huì)依據(jù)channel的事件調(diào)用channel的方法進(jìn)行相關(guān)操作,每個(gè)channel的操作和處理在eventloop中都是順序的,如下圖:

2. ChannelPipeline和ChannelHandler

ChannelPipeline和ChannelHandler用于channel事件的攔截和處理,Netty使用類似責(zé)任鏈的模式來設(shè)計(jì)ChannelPipeline和ChannelHandlerChannelPipeline相當(dāng)于ChannelHandler的容器,channel事件消息在ChannelPipeline中流動(dòng)和傳播,相應(yīng)的事件能夠被ChannelHandler攔截處理、傳遞、忽略或者終止,如下圖所示:

2.1 INBOUD和OUTBOUND事件

inbound:當(dāng)發(fā)生某個(gè)I/O操作時(shí)由IO線程流向用戶業(yè)務(wù)處理線程的事件,如鏈路建立、鏈路關(guān)閉或者讀完成等 outbound:由用戶線程或者代碼發(fā)起的IO操作事件

2.2 ChannelHandlerContext

每個(gè)ChannelHandler 被添加到ChannelPipeline 后,都會(huì)創(chuàng)建一個(gè)ChannelHandlerContext 并與之創(chuàng)建的ChannelHandler 關(guān)聯(lián)綁定。如下圖:

ChannelHandler通過ChannelHandlerContext來操作channel和channelpipeline

2.3 ChannelHandler

ChannelHandler負(fù)責(zé)I/O事件或者I/O操作進(jìn)行攔截和處理,用戶可以通過ChannelHandlerAdapter來選擇性的實(shí)現(xiàn)自己感興趣的事件攔截和處理。

由于Channel只負(fù)責(zé)實(shí)際的I/O操作,因此數(shù)據(jù)的編解碼和實(shí)際處理都需要通過ChannelHandler進(jìn)行處理。

2.4 注意

ChannelPipeline是線程安全的,多個(gè)業(yè)務(wù)線程可以并發(fā)的操作ChannelPipeline;ChannelHandler不是線程安全的,用戶需要自己保重ChannelHandler的線程安全

3. ChannelFuture與ChannelPromise

在Netty中,所有的I/O操作都是異步的,因此調(diào)用一個(gè)I/O操作后,將繼續(xù)當(dāng)前線程的執(zhí)行,但I(xiàn)/O操作的結(jié)果怎么獲得?——ChannelFuture。

如上圖,當(dāng)前線程A異步發(fā)起I/O操作后,不阻塞繼續(xù)執(zhí)行相關(guān)操作,當(dāng)IO線程B完成后,通過回調(diào)執(zhí)行A設(shè)置的回調(diào)方法。

回調(diào)方法通過監(jiān)聽的形式實(shí)現(xiàn):ChannelFutureListener。

ChannelPromise是ChannelFuture的擴(kuò)展,允許設(shè)置I/O操作的結(jié)果,使ChannelFutureListener可以執(zhí)行相關(guān)操作

轉(zhuǎn)載于:https://www.cnblogs.com/TomSnail/p/6192885.html

總結(jié)

以上是生活随笔為你收集整理的Netty学习四:Channel的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产日韩一级 | 九九视频免费观看 | 欧美视频一二三 | 亚洲天堂手机在线观看 | www五月婷婷 | 偷拍亚洲欧美 | 91在线第一页 | 日韩人妻精品在线 | 波多野结衣在线一区二区 | 手机看片1024日韩 | 高清国产一区二区三区四区五区 | 日韩第一页 | 秋葵视频在线 | 全黄一级裸体片 | 国产乱码一区二区 | 人妻视频一区二区 | 成人av电影在线播放 | av一级免费 | 福利在线免费视频 | 在线看成人av | jizz成人 | 超碰在线网站 | 综合久久99 | 久草综合在线 | av成人免费在线观看 | 尹人综合在线 | 亚洲色图日韩精品 | 国产丝袜一区二区三区 | 久久精品麻豆 | 黄色大片网 | 久久在线一区二区 | 国产精品一二 | 狠狠干少妇| 国产99久一区二区三区a片 | 女同av在线 | 亚洲成av人片在线观看无 | 自拍啪啪 | 中文字幕一区二区在线老色批影视 | 久久亚洲精品国产精品黑人v | 五月天视频网 | 男人天堂影院 | 黄色三级a | www.香蕉网 | 娇妻被肉到高潮流白浆 | 啪啪网页 | 日本国产在线视频 | 亚洲在线激情 | 51精品| 国产com| 99热这里是精品 | 激情视频一区二区三区 | 海量av资源 | 成人免费入口 | 国产免费一区二区三区在线播放 | 91在线观看网站 | 玖玖色资源 | 伊人av在线播放 | 成人啪啪网站 | 欧美视频一区二区三区 | 久久久久久久九九九九 | 美国成人免费视频 | 青青青手机视频在线观看 | 欧美性做爰毛片 | 精品视频一区二区三区四区 | 成人无码一区二区三区 | 精品人妻伦九区久久aaa片 | mm131丰满少妇人体欣赏图 | 欧美动态视频 | 国产精品视频大全 | 国产成人亚洲综合 | 污网站在线播放 | 天天色天天综合 | 蜜桃av噜噜一区二区三区网址 | 亚洲国产欧美一区二区三区深喉 | 成人av无码一区二区三区 | 在线亚洲观看 | 亚洲精品成av人片天堂无码 | 日韩欧美亚洲在线 | 青青偷拍视频 | 亚洲婷婷综合网 | 2025国产精品 | 快播色图| 欧美日韩亚洲综合 | 免费观看在线高清 | 草莓视频18免费观看 | 女人扒开屁股让我添 | 男女激情免费网站 | 久久中文字幕在线 | 激情综合站 | 综合天堂av久久久久久久 | 国产又黄又爽 | 亚洲欧洲视频 | 日本伦理一区 | 日本亚洲黄色 | 91免费看. | 超碰人人人人 | 青青草视频国产 | 欧美日韩在线影院 | 日韩一级免费看 |