天天看点

Netty的核心组件初识

一 概述

Netty中主要构件块为:

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

它们代表了不同类型的构造:资源,编辑以及通知。应用程序需要使用这些构件来访问网络以及流经网络的数据。

二 Channel

Channel是Java NIO的一个基本构造,它代表一个到实例(如一个硬件设备,一个文件,一个网络套接字或者一个能够执行一个或者多个不同的I/O操作的程序组件)的开放连接,如读操作和写操作。

我们也可以将Channel看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接。

三 回调

一个回调其实就是一个方法A,一个指向已经被提供给另一个方法B的方法A的引用,即B(A)。这使得接受回调的方法B可以在适当的时候调用回调函数A。

四 Future

Future提供了另一中在操作完成时通知应用程序的方式。这个对象可以看作是一个异步操作的结果的占位符;它将在未来的某个时刻完成,并提供对其结果的访问。

JDK预置了接口java.util.concurrent.Future,但是其所提供的实现,只允许手动检查对应的操作是否已经完成,或者一直阻塞到它完成。这是非常繁琐的,所以Netty提供了它自己的实现——ChannelFuture,用于在执行异步操作的时候使用。

Future

public interface Future<V> {

    boolean cancel(boolean mayInterruptIfRunning);

    boolean isCancelled();

    boolean isDone();

    V get() throws InterruptedException, ExecutionException;

    V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
}
           

五 事件和ChannelHandler

Netty使用不同的事件来通知我们状态的改变或者是操作的状态。这使得我们能够基于已经发生的事件来触发适当的动作。这些动作可能是记录日志;数据转换;流控制;应用程序逻辑等。

暂时理解的不够系统,继续学习,待续。