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实例都类似于一种为了响应特定事件而被执行的回调;