在guava的AbstractService类中实现stop()

时间:2012-09-30 00:04:34

标签: guava

我试图了解guava的AbstractService是如何实现的。在接口Service中,已经提到了各种状态转换。其中一个转变来自STOPPING - >当对stop()的调用成功时,TERMINATED。

现在当我看到AbstractService的stop()如何实现时,我发现在STOPPING的情况下,它们会通过并且不会将状态更改为TERMINATED。

我可能错了,我只是想学习并理解它是如何运作的。

这里给出了AbstractService类的代码。 http://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/util/concurrent/AbstractService.java?r=8d5659ad0e137d3a594014793264292a75b48bb9

在页面上搜索stop()以查看其实现

1 个答案:

答案 0 :(得分:4)

当您在stop()状态中致电RUNNING时,状态将更改为STOPPING并调用doStop()方法。之后再次呼叫stop()不应该做任何事情。 doStop()实施应调用notifyStopped(),将状态从STOPPING更改为TERMINATED