当前位置: 首页 > news >正文

免费开源建站教学网站网站预订模板怎么做

免费开源建站教学网站,网站预订模板怎么做,网站降权的表现,交易网站建设具体方案文章目录1.Channel介绍2.ChannelFuture接口介绍3.GenericFutureListener接口介绍1.Channel介绍 NIO的Channel与Netty的Channel 不一样 Netty重新设计了Channel接口,并且给予了很多不同的实现, Channel是Netty网络的抽象类, 除了NIO中Channel所包含的网络I/O操作, 主动建立和关…

文章目录

      • 1.Channel介绍
      • 2.ChannelFuture接口介绍
      • 3.GenericFutureListener接口介绍

1.Channel介绍

NIO的Channel与Netty的Channel 不一样

Netty重新设计了Channel接口,并且给予了很多不同的实现, Channel是Netty网络的抽象类, 除了NIO中Channel所包含的网络I/O操作, 主动建立和关闭连接外, 还包括了Netty框架的功能, 比如获取Channel的EventLoop和Pipeline。

在这里插入图片描述

Channel的基本方法

  • id():返回此通道的全局唯一标识符.
  • isActive():如果通道处于活动状态并连接,则返回true.
  • isOpen():如果通道打开并且可能稍后激活,则返回true.
  • isRegistered():如果通道注册了EventLoop,则返回true。
  • config():返回关于此通道的配置.
  • localAddress():返回此通道绑定的本地地址.
  • pipeline():返回分派的ChannelPipeline.
  • remoteAddress():返回此通道连接到的远程地址.
  • flush():请求通过ChannelOutboundInvoker将所有挂起的消息输出.

在这里插入图片描述

  • Channel接口是能与一个网络套接字(或组件)进行I/0操作(读取\写入\连接\绑定)的纽带
  • 通过Channel可以获取连接的状态(是否连接/是否打开), 配置通道的参数(设置缓冲区大小等), 进行I/O操作

Channel的释放

当Channel完成工作后, 需要调用ChannelOutboundInvoker.close()ChannelOutboundInvoker.close(ChannelPromise)释放所有资源. 这样做是为了确保所有资源(文件句柄)都能够得到释放

2.ChannelFuture接口介绍

在这里插入图片描述

Future最早出现于JDK的java.util.concurrent.Future, 表示异步操作的结果, 由于Netty的Future都是与异步I/O操作相关的, 因此命名为ChannelFuture, 代表它与Channel操作相关。
ChannelFuture的作用是用来保存Channel异步操作的结果, 提供了一种在操作完成时通知应用程序的方式。
Channel与ChannelFuture可以说形影不离的。

Channel channel();
ChannelFuture addListener(GenericFutureListener<? extends Future<? super Void>> listener);
ChannelFuture addListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);
ChannelFuture removeListener(GenericFutureListener<? extends Future<? super Void>> listener);
ChannelFuture removeListeners(GenericFutureListener<? extends Future<? super Void>>... listeners);
ChannelFuture sync() throws InterruptedException;
ChannelFuture syncUninterruptibly();
ChannelFuture await() throws InterruptedException;
ChannelFuture awaitUninterruptibly();
  • ChannelFuture有两种状态:未完成(uncompleted)和完成(completed)
  • 当令Channel开始一个I/O操作时,会创建一个新的ChannelFuture去异步完成操作
  • 被创建时的ChannelFuture处于uncompleted状态(非失败,非成功,非取消);一旦ChannelFuture完成I/O操作,ChannelFuture将处于completed状态,结果可能有三种:
  1. 操作成功
  2. 操作失败
  3. 操作取消

在这里插入图片描述

3.GenericFutureListener接口介绍

GenericFutureListener是监听接口

优先使用addListener(GenericFutureListener),而非await()或sysn()

  • addListener是非阻塞的, 把特定的ChannelFutureListener添加到ChannelFuture中, ChannelFutureListener会利于最佳的性能和资源的利用。
  • await()是一个阻塞的操作。
  • ChannelFuture的sync()方法, 作用是阻塞main线程, 等到连接建立好程序才向下运行。Channel由主线程获取。
  • sync () 会抛出异常, 建议使用 sync (), await () 不会抛出异常, 主线程无法捕捉子线程执行抛出的异常。
  • ChannelFuture用addListener()方法。异步调用回调对象的operationComplete方法。
 @Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) {ChannelFuture future = ctx.channel().close();future.addListener(new ChannelFutureListener() {public void operationComplete(ChannelFuture future) {// Perform post-closure operation// ...}});}

ChannelFutureListenerGenericFutureListener的实现类, 用于添加异步回调事件

ChannelFuture 允许添加一个或多个GenericFutureListener监听接口。

在这里插入图片描述

添加监听器源码:

    @Overridepublic Promise<V> addListeners(GenericFutureListener<? extends Future<? super V>>... listeners) {checkNotNull(listeners, "listeners");synchronized (this) {for (GenericFutureListener<? extends Future<? super V>> listener : listeners) {if (listener == null) {break;}addListener0(listener);}}if (isDone()) {notifyListeners();}return this;}

addListener0()

负责把用户一个一个添加的listener对象转换为数组结构DefaultFutureListeners, 存储到listeners 成员变量

在这里插入图片描述

notifyListeners()

将通知回调任务添加到eventloop当中, eventloop当中的任务顺序就最后是notifyListeners(), 保证了发送消息后, 执行notifyListeners去调用监听器。

http://www.yayakq.cn/news/846900/

相关文章:

  • 天津网站建设zhy88淘宝买cdk自己做网站
  • 个人类网站类网站仿站 做网站
  • 网站菜单怎么做wordpress 判断加密
  • 整套html企业网站模板h5制作微信小程序
  • 网站设计的意义莆田seo培训
  • 一些免费的网站合适做服装的国际网站
  • 连云港网站建设哪家好网站建设公司做销售好不好?
  • 菏泽网站建设多少钱wamp下安装wordpress
  • 上海网站设计制作报价网站留言板 html
  • 佛山网吧什么时候恢复营业网站关键词优化怎么做的
  • 外网图片素材网站wordpress 管理密码忘记
  • 中文个人网站模板下载网络推广软件排行榜
  • 河南整站百度快照优化网站无法访问
  • 南京行业门户网站上海关键词推广
  • vue 做网站建立网站需要多少钱?
  • 福建省住房和建设厅网站可以全部免费观看的平台
  • 建立网站需要注册公司吗网站流量统计分析工具
  • 网站域名查询系统龙岩市官方网站
  • 建站 wordpress邢台网站建设服务商
  • 建立网站需要哪些步骤do_action wordpress
  • 马克 扎克伯格大学做的网站做网站优化有什么方法
  • php 搭建手机网站服装外贸erp
  • 中国万网网站建设过程wordpress获取文章摘要
  • 建设电商网站的赣州推广团队
  • 山西网站开发有限公司临沂建站平台
  • php网站模板免费下载网站建设月薪
  • 做网站广告有哪些职位行业网站名录
  • 重庆忠县网站建设报价1688官网商家版
  • 北京市规划网站做网站怎么销售
  • 方案网站网站建设所出现的问题