首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

张龙netty学习笔记 P55

ChannelFuture和Future

netty对Jdk的Future进行了封装,做出了自己的Future,使其拥有更全面的接口。而ChannelFuture是对netty的Future的进一步封装,专门用于Channel的I/O使用。

Channel

https://blog.csdn.net/zero__007/article/details/80949350 Channel和Unsafe 每个Channel有一个ChannelPipeline

ChannelHandlerContext

我发现,AbstractChannelHandlerContext有一个成员变量叫next,或许就是指下一个Handler的ChannelContext。如果是,那是不是每个Handler会被分配不同的ChannelHandlerContext?

volatile

https://www.cnblogs.com/dolphin0520/p/3920373.html volatile保证可见性和禁止指令重排序。

https://blog.csdn.net/anjxue/article/details/51038466 volatile对于double-check的作用:使new操作立即可见

synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized,但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性。通常来说,使用volatile必须具备以下2个条件:

  1. 对变量的写操作不依赖于当前值
  2. 该变量没有包含在具有其他变量的不变式中

https://blog.csdn.net/u012312373/article/details/44983523 内存可见性

happens-before

https://www.cnblogs.com/chenssy/p/6393321.html

double-check

https://blog.csdn.net/wxy941011/article/details/81091118

为处理原版非延迟加载方式瓶颈问题,我们需要对 instance 进行第二次检查,目的是避开过多的同步(因为这里的同步只需在第一次创建实例时才同步,一旦创建成功,以后获取实例时就不需要同获取锁了

下一篇
举报
领券