@Beta public interface Service
start()
and
stop()
lifecycle methods to transfer into and out of this state.
Example services include webservers, RPC servers and timers. The normal
lifecycle of a service is:
Service.State.NEW
->Service.State.STARTING
->Service.State.RUNNING
->Service.State.STOPPING
->Service.State.TERMINATED
Service.State.FAILED
, and its behavior is undefined. Such a service cannot be
started nor stopped.
Implementors of this interface are strongly encouraged to extend AbstractService
, AbstractExecutionThreadService
, or AbstractIdleService
, which make the threading and state management easier.
com.google.common.base.Service
)Modifier and Type | Interface and Description |
---|---|
static class |
Service.State
The lifecycle states of a service.
|
Modifier and Type | Method and Description |
---|---|
boolean |
isRunning()
Returns
true if this service is running. |
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()
|
Service.State |
stopAndWait()
Initiates service shutdown (if necessary), returning once the service has
finished stopping.
|
ListenableFuture<Service.State> start()
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.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
.Service.State startAndWait()
start().get()
, this method throws
no checked exceptions, and it cannot be interrupted.RuntimeException
- if startup failedService.State state()
ListenableFuture<Service.State> stop()
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
.Service.State stopAndWait()
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.RuntimeException
- if shutdown failed