返回介绍

Channel设计与代码实现 - 类ManagedChannel

发布于 2020-09-14 13:14:41 字数 1967 浏览 1510 评论 0 收藏 0

类ManagedChannel 在 Channel 的基础上提供生命周期管理的功能。

实际实现式就是添加了 shutdown()/shutdownNow() 方法用于关闭 Channel,isShutdown()/isTerminated() 方法用于检测 Channel 状态, 以及 awaitTermination() 方法用于等待关闭操作完成。

类定义

  1. package io.grpc;
  2. public abstract class ManagedChannel extends Channel {}

依然是 abstract class,还继续在 package io.grpc中。

类方法

shutdown()方法

  1. public abstract ManagedChannel shutdown();

发起一个有组织的关闭,期间已经存在的调用将继续,而新的调用将被立即取消。

shutdownNow()方法

  1. public abstract ManagedChannel shutdownNow();

发起一个强制的关闭,期间已经存在的调用和新的调用都将被取消。虽然是强制,关闭过程依然不是即可生效;如果在这个方法返回后立即调用 isTerminated() 方法,将可能返回 false 。

isShutdown()方法

  1. public abstract boolean isShutdown();

返回channel是否是关闭。关闭的channel立即取消任何新的调用,但是将继续有一些正在处理的调用。

isTerminated()方法

  1. public abstract boolean isTerminated();

返回channel是否是结束。结束的 channel 没有运行中的调用,并且相关的资源已经释放(像TCP连接)。

awaitTermination()方法

  1. public abstract boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;

等待 channel 变成结束,如果超时时间达到则放弃。

返回值表明 channel 是否结束,和 isTerminated() 方法一致。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文