我试图了解番石榴的 AbstractService 是如何实现的。在接口 Service 中已经提到了各种状态转换。当对 stop() 的调用成功时,一种这样的转换是从 STOPPING -> 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() 以查看其实现