1. Channel

传入或传出数据的载体,可以被打开或关闭,连接或断开连接;

2. 回调

一个回调其实就是一个方法,一个指向已经被提供给另外一个方法的方法的引用。这使得接受回调的方法可以在适当的时候调用前者;

3. Future

提供了另一种在操作完成时通知应用程序的方式;

这个对象可以看做是一个异步操作的结果的占位符;将在未来的某个时刻完成,并提供对其结果的访问;

JDK预置的Future只允许手动检查操作是否完成或一直阻塞到完成;Netty提供了自己的ChannelFuture;

ChannelFuture可以注册一个或多个ChannelFutureListenner实例,其回调方法operationComplete() 会在操作完成时被调用;

Channel channel = ...;
ChannelFuture future = channel.connect(new InetSocketAddress("...", ...)); //异步连接到远程节点
future.addListenner(new ChannelFutureListenner(){ //注册监听器
    @Override
    public void operationComplete (ChannelFuture future){ //操作完成时回调该方法
        if (future.isSuccess()) {...} else {....}
    }        
});

4. 事件和ChannelHandler

Netty使用不同的事件来通知状态的改变或操作的状态;

Netty的ChannelHandle为处理器提供了基本的抽象;每个ChannelHandle实例都类似于一种为了响应特定事件而被执行的回调;