我试图了解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()以查看其实现
答案 0 :(得分:4)
当您在stop()
状态中致电RUNNING
时,状态将更改为STOPPING
并调用doStop()
方法。之后再次呼叫stop()
不应该做任何事情。 doStop()
实施应调用notifyStopped()
,将状态从STOPPING
更改为TERMINATED
。