Netty中的所有I/O操作都是异步的,这意味着任何I/O调用都会立即返回,而ChannelFuture会提供有关的信息
I/O操作的结果或状态。
future案例
- ChannelFuture状态
- 未完成:当I/O操作开始时,将创建一个新的对象,新的最初是未完成的 - 它既没有成功,也没有成 功,也没有被取消,因为I/O操作尚未完成。
- 已完成:当I/O操作完成,不管是成功、失败还是取消,Future都是标记为已完成的, 失败的时候也有具 体的信息,例如原因失败,但请注意,即使失败和取消属于完成状态
- 注意:不要在IO线程内调用future对象的sync或者await方法。不能在channelHandler中调用sync或者 await方法 这样会阻塞服务channel的线程
- ChannelPromise:继承于ChannelFuture,进一步拓展用于设置IO操作的结果
在后面客户端跟服务端都会看见这么两句话
f.channel().closeFuture().sync();作用是产生一个wait()事件,保证main线程存活,否则main线程直接结束了。知道channel关闭才执行后面的操作
https://blog.csdn.net/yzh_1346983557/article/details/86554837?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase
优雅退出
https://blog.csdn.net/yq76034150/article/details/7259474?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.baidujs&dist_request_id=1332041.1468.16191951119991131&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.baidujs
一个bug
没法优雅退出