2012-09-30 57 views
1

我想了解番石榴的AbstractService是如何實現的。在界面服務中,已經提到了各種狀態轉換。當stop()調用成功時,一個這樣的轉換是從STOPPING - > TERMINATED。在番石榴的AbstractService類中停止()實現

現在,當我看到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

其實我發現這種情況永遠不會出現。有人可以確認我在想什麼是正確的。 – Apurv

回答

4

當您在RUNNING狀態調用stop(),狀態更改爲STOPPINGdoStop()方法被調用。之後再次撥打stop()不應該做任何事情。 doStop()實現應該調用notifyStopped(),它將狀態從STOPPING更改爲TERMINATED

+0

非常感謝科林 – Apurv