1

我试图了解番石榴的 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() 以查看其实现

4

1 回答 1

4

当您stop()RUNNING状态中调用时,状态将更改为STOPPINGdoStop()调用方法。之后再次调用stop()不应该做任何事情。doStop()实现应该调用which将notifyStopped()状态从 更改STOPPINGTERMINATED

于 2012-09-30T01:25:40.473 回答