|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.google.common.util.concurrent.AbstractService
@Beta public abstract class AbstractService
Base class for implementing services that can handle doStart()
and
doStop()
requests, responding to them with notifyStarted()
and notifyStopped()
callbacks. Its subclasses must manage threads
manually; consider AbstractExecutionThreadService
if you need only a
single execution thread.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface com.google.common.util.concurrent.Service |
---|
Service.State |
Constructor Summary | |
---|---|
AbstractService()
|
Method Summary | |
---|---|
protected abstract void |
doStart()
This method is called by start() to initiate service startup. |
protected abstract void |
doStop()
This method should be used to initiate service shutdown. |
boolean |
isRunning()
Returns true if this service is running. |
protected void |
notifyFailed(Throwable cause)
Invoke this method to transition the service to the Service.State.FAILED . |
protected void |
notifyStarted()
Implementing classes should invoke this method once their service has started. |
protected void |
notifyStopped()
Implementing classes should invoke this method once their service has stopped. |
ListenableFuture<Service.State> |
start()
If the service state is Service.State.NEW , this initiates service startup
and returns immediately. |
Service.State |
startAndWait()
Initiates service startup (if necessary), returning once the service has finished starting. |
Service.State |
state()
Returns the lifecycle state of the service. |
ListenableFuture<Service.State> |
stop()
If the service is starting or running, this initiates service shutdown and returns immediately. |
Service.State |
stopAndWait()
Initiates service shutdown (if necessary), returning once the service has finished stopping. |
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public AbstractService()
Method Detail |
---|
protected abstract void doStart()
start()
to initiate service startup. The
invocation of this method should cause a call to notifyStarted()
,
either during this method's run, or after it has returned. If startup
fails, the invocation should cause a call to notifyFailed(Throwable)
instead.
This method should return promptly; prefer to do work on a different
thread where it is convenient. It is invoked exactly once on service
startup, even when start()
is called multiple times.
protected abstract void doStop()
notifyStopped()
, either
during this method's run, or after it has returned. If shutdown fails, the
invocation should cause a call to notifyFailed(Throwable)
instead.
This method should return promptly; prefer to do work on a different
thread where it is convenient. It is invoked exactly once on service
shutdown, even when stop()
is called multiple times.
public final ListenableFuture<Service.State> start()
Service
Service.State.NEW
, this initiates service startup
and returns immediately. If the service has already been started, this
method returns immediately without taking action. A stopped service may not
be restarted.
start
in interface Service
Future.get()
will block
until the service has finished starting, and returns one of Service.State.RUNNING
, Service.State.STOPPING
or Service.State.TERMINATED
. If
the service fails to start, Future.get()
will throw an
ExecutionException
, and the service's state will be Service.State.FAILED
. If it has already finished starting, Future.get()
returns immediately. Cancelling the returned
future is unsupported and always returns false
.public final ListenableFuture<Service.State> stop()
Service
stop
in interface Service
Future.get()
will block
until the service has finished shutting down, and either returns
Service.State.TERMINATED
or throws an ExecutionException
. If
it has already finished stopping, Future.get()
returns
immediately. Cancelling this future is unsupported and always returns
false
.public Service.State startAndWait()
Service
start().get()
, this method throws
no checked exceptions, and it cannot be interrupted.
startAndWait
in interface Service
public Service.State stopAndWait()
Service
Service.State.STARTING
, startup will be
cancelled. If this is Service.State.NEW
, it is terminated
without having been started nor stopped. Unlike calling stop().get()
, this method throws no checked exceptions.
stopAndWait
in interface Service
protected final void notifyStarted()
Service.State.STARTING
to Service.State.RUNNING
.
IllegalStateException
- if the service is not
Service.State.STARTING
.protected final void notifyStopped()
Service.State.STOPPING
to Service.State.TERMINATED
.
IllegalStateException
- if the service is neither Service.State.STOPPING
nor Service.State.RUNNING
.protected final void notifyFailed(Throwable cause)
Service.State.FAILED
. The service will not be stopped if it
is running. Invoke this method when a service has failed critically or
otherwise cannot be started nor stopped.
public final boolean isRunning()
Service
true
if this service is running.
isRunning
in interface Service
public final Service.State state()
Service
state
in interface Service
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |