netty源码分析之ChannelFuture
2013-10-11 18:18
756 查看
在netty里面所有的nio相关的操作都是异步的,返回一个channelfuture对象,这个里面可以添加一些listener,然后再相关操作完成后进行触发,最主要的是通过这个对象可以查询相关操作的执行情况,是成功了,还是失败了。
我们来就来看看DefaultChannelFuture的实现就好,我们应该能猜到netty的思想,里面有一个listener的集合,addListener会添加listener到集合里面,然后再真正的io操作完成之后来触发相应的listener,这里面有很多关于多线程的程序,这个还不是很了解,应该后面多恶补恶补。
Java代码
private void notifyListeners() {
// This method doesn't need synchronization because:
// 1) This method is always called after synchronized (this) block.
// Hence any listener list modification happens-before this method.
// 2) This method is called only when 'done' is true. Once 'done'
// becomes true, the listener list is never modified - see add/removeListener()
if (firstListener != null) {
notifyListener(firstListener);
firstListener = null;
if (otherListeners != null) {
for (ChannelFutureListener l: otherListeners) {
notifyListener(l);
}
otherListeners = null;
}
}
}
我们来就来看看DefaultChannelFuture的实现就好,我们应该能猜到netty的思想,里面有一个listener的集合,addListener会添加listener到集合里面,然后再真正的io操作完成之后来触发相应的listener,这里面有很多关于多线程的程序,这个还不是很了解,应该后面多恶补恶补。
Java代码
private void notifyListeners() {
// This method doesn't need synchronization because:
// 1) This method is always called after synchronized (this) block.
// Hence any listener list modification happens-before this method.
// 2) This method is called only when 'done' is true. Once 'done'
// becomes true, the listener list is never modified - see add/removeListener()
if (firstListener != null) {
notifyListener(firstListener);
firstListener = null;
if (otherListeners != null) {
for (ChannelFutureListener l: otherListeners) {
notifyListener(l);
}
otherListeners = null;
}
}
}
相关文章推荐
- Netty线程模型、Future、Channel总结和源码分析
- netty4.0.x源码分析—channel
- Netty 权威指南笔记(七):ChannelPipeline 和 ChannelHandler 源码分析
- Netty5源码分析(七) -- 异步执行Future和Promise
- netty源码分析之-Channel、ChannelPipeline、ChannelHandler以及 ChannelHandlerContext 详解(2)
- netty(九)源码分析之Future和Promise
- Netty学习:ChannelHandler执行顺序详解,附源码分析
- Netty3 源码分析 - Channel
- Netty源码分析之ChannelPipeline
- netty源码分析 之三 transport(channel)
- netty源码分析 之四 transport(ChannelPipeline)
- netty源码分析(四)Netty提供的Future与ChannelFuture优势分析与源码讲解
- netty源码分析之Future/Promise
- netty(十三)源码分析之Channel
- netty4.0.x源码分析—channel
- Netty3 源码分析 - ChannelUpstreamHandler
- spark2.1源码分析3:spark-rpc如何实现将netty的Channel隐藏在inbox中
- netty源码分析 之五 transport(ChannelHandler)
- Netty 源码分析之SimpleChannelInboundHandler
- Netty3 源码分析 - ChannelHandlerContext