- gPRC 介绍
- gPRC 介绍 - 资料收集整理
- gPRC 介绍 - Protocol Buffer 3
- gPRC文档
- gPRC文档 - gRPC官方文档(中文版)
- gPRC文档 - gRPC动机和设计原则
- gPRC文档 - 源码导航
- 基础 - NameResolver
- NameResolver - URI术语
- NameResolver - 类NameResolver
- NameResolver - 类DnsNameResolver
- NameResolver - 类DirectAddressNameResolver
- NameResolver - NameResolver的用法
- 基础 - Metadata
- Channel层
- Channel设计与代码实现 - 类Channel
- Channel设计与代码实现 - 类ManagedChannel
- 类ManagedChannelImpl - 空闲模式
- 类ManagedChannelImpl - InUseStateAggregator
- 类ManagedChannelImpl - Name Resolver
- 类ManagedChannelImpl - Load Balancer
- 类ManagedChannelImpl - Transport
- 类ManagedChannelImpl - Executor
- 类ManagedChannelImpl - 关闭
- Channel层 - Channel Builder设计与代码实现
- Channel Builder设计与代码实现 - 类ManagedChannelBuilder
- Channel Builder设计与代码实现 - 类AbstractManagedChannelImplBuilder
- Channel Builder设计与代码实现 - 类NettyChannelBuilder
- Channel层 - Channel Provider设计与代码实现
- Channel Provider设计与代码实现 - 类ManagedChannelProvider
- Channel Provider设计与代码实现 - 类NettyChannelProvider
- Channel层 - 类CallOptions
- Stub层 - 类DemoServiceBlockingStub
- Stub层 - 类AbstractStub
- 客户端流程
- 状态 - 类Status
- 状态 - 状态码详细定义
- 状态 - 类StatusException
- 状态 - 异常处理的流程分析
- 实践 - 集成Spring Boot
- 实践 - 文档生成
- 文档生成 - 支持proto3
- 文档生成 - build插件
- 文档生成 - 使用模板定制输出
- 实践 - 代理
- 实践 - 超时
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Channel设计与代码实现 - 类ManagedChannel
类ManagedChannel 在 Channel 的基础上提供生命周期管理的功能。
实际实现式就是添加了 shutdown()/shutdownNow() 方法用于关闭 Channel,isShutdown()/isTerminated() 方法用于检测 Channel 状态, 以及 awaitTermination() 方法用于等待关闭操作完成。
类定义
package io.grpc;
public abstract class ManagedChannel extends Channel {}
依然是 abstract class,还继续在 package io.grpc中。
类方法
shutdown()方法
public abstract ManagedChannel shutdown();
发起一个有组织的关闭,期间已经存在的调用将继续,而新的调用将被立即取消。
shutdownNow()方法
public abstract ManagedChannel shutdownNow();
发起一个强制的关闭,期间已经存在的调用和新的调用都将被取消。虽然是强制,关闭过程依然不是即可生效;如果在这个方法返回后立即调用 isTerminated() 方法,将可能返回 false 。
isShutdown()方法
public abstract boolean isShutdown();
返回channel是否是关闭。关闭的channel立即取消任何新的调用,但是将继续有一些正在处理的调用。
isTerminated()方法
public abstract boolean isTerminated();
返回channel是否是结束。结束的 channel 没有运行中的调用,并且相关的资源已经释放(像TCP连接)。
awaitTermination()方法
public abstract boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
等待 channel 变成结束,如果超时时间达到则放弃。
返回值表明 channel 是否结束,和 isTerminated() 方法一致。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论