netty学习(二)基本组件

netty的基本组件主要有

  • Channel
  • 回调
  • Future
  • 事件和ChannelHandle

1.Channel

  Channel是JavaNIO的一个基本构造。

  它代表一个到实体(入一个硬件设备,一个文件,一个网络套接字或者一个能够执行一个或者多个不同IO操作的程序组件)的开发连接,如读写和写操作。

  目前,可以把Channel看作是传入(入站)或者传出(出站)数据的载体。因此,他可以被打开或者被关闭,连接或者断开连接。

2.回调

  一个回调其实就是一个方法,一个纸箱已经被提供另外一个方式的方法引用,netty中使用了回调来处理事件;当一个回调被触发时,相关的事件可以被一个ChannelHandler处理。具体的回调实现及原理可以看看这篇博客开链

3.Future

Future提供了另外一种通知应用操作已经完成的方式。这个对象作为一个异步操作结果的占位符,它将在将来的某个时候完成并提供结果。

JDK 附带接口 java.util.concurrent.Future,但所提供的实现只允许您手动检查操作是否完成或阻塞了。这是很麻烦的,所以 Netty 提供自己了的实现,ChannelFuture,用于在执行异步操作时使用。

ChannelFuture 提供多个附件方法来允许一个或者多个 ChannelFutureListener实例。这个回调方法 operationComplete() 会在操作完成时调用。事件监听者能够确认这个操作是否成功或者是错误。如果是后者,我们可以检索到产生的Throwable。简而言之, ChannelFutureListener 提供的通知机制不需要手动检查操作是否完成的。

每个 Netty 的 outbound I/O 操作都会返回一个ChannelFuture;这样就不会阻塞。这就是 Netty 所谓的“自底向上的异步和事件驱动”。

 4.事件和Handler

Netty 使用不同的事件来通知我们更改的状态或操作的状态。这使我们能够根据发生的事件触发适当的行为。

这些行为可能包括:

·       日志

·       转换

·       流控制

·       用程序逻辑

由于 Netty是一个网络框架,事件很清晰的跟入站或出站数据流相关。因为一些事件可能触发传入的数据或状态的变化包括:

·       活动或非活动

·       据的

·       用户事件

·       错误

·       出站事件是由于在未来操作将触发一个动作。这些包括:

·       关闭一个接到

·       或冲刷据到 socket

·       每个事件都可以分配给用户实现处理程序类的方法。这说明了事件驱动的范例可直接用程序构建块。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值