Netty的ChannelFuture.channel().closeFuture().syncUninterruptibly()作用

基本上Netty的server:

ChannelFuture channelFuture = serverBootstrap.bind(port).syncUninterruptibly();//绑定端口,开启监听

后面都会加上这句

channelFuture.channel().closeFuture().syncUninterruptibly();

那这行代码到底有什么作用呢?具体没有深入源码,只随笔记录一下心得:

作用:Netty server启动:绑定端口,开启监听是通过异步开启一个子线程执行的,当前线程不会同步等待;closeFuture().syncUninterruptibly()就是让当前线程(即主线程)同步等待Netty server的close事件,Netty server的channel close后,主线程才会继续往下执行。closeFuture()在channel close的时候会通知当前线程。

          服务端管道关闭的监听器并同步阻塞,直到server channel关闭,线程才会往下执行,结束进程;

          主线程执行到这里就 wait 子线程结束,子线程才是真正监听和接受请求的,子线程就是Netty启动的监听端口的线程;

          即closeFuture()是开启了一个子线程server channel的监听器,负责监听channel是否关闭的状态,syncUninterruptibly()让主线程同步等待子线程结果。

补充:.channel.close()才是主动关闭通道的方法。

 

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值