1

グアバの AbstractService がどのように実装されているかを理解しようとしていました。インターフェイス Service では、さまざまな状態遷移が言及されています。そのような遷移の 1 つは、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()実装は、状態をからに変更するを呼び出す必要がnotifyStopped()ありSTOPPINGますTERMINATED

于 2012-09-30T01:25:40.473 に答える