Class AbstractExecutionThreadService
- java.lang.Object
-
- com.google.common.util.concurrent.AbstractExecutionThreadService
-
- All Implemented Interfaces:
Service
@Beta public abstract class AbstractExecutionThreadService extends java.lang.Object implements Service
Base class for services that can implementstartUp(),run()andshutDown()methods. This class uses a single thread to execute the service; considerAbstractServiceif you would like to manage any threading manually.- Since:
- 1.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.google.common.util.concurrent.Service
Service.Listener, Service.State
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddListener(Service.Listener listener, java.util.concurrent.Executor executor)Registers aService.Listenerto be executed on the given executor.voidawaitRunning()Waits for theServiceto reach the running state.voidawaitRunning(long timeout, java.util.concurrent.TimeUnit unit)Waits for theServiceto reach the running state for no more than the given time.voidawaitTerminated()Waits for theServiceto reach the terminated state.voidawaitTerminated(long timeout, java.util.concurrent.TimeUnit unit)Waits for theServiceto reach a terminal state (eitherterminatedorfailed) for no more than the given time.java.lang.ThrowablefailureCause()Returns theThrowablethat caused this service to fail.booleanisRunning()Returnstrueif this service is running.ListenableFuture<Service.State>start()Deprecated.Service.StatestartAndWait()Deprecated.ServicestartAsync()If the service state isService.State.NEW, this initiates service startup and returns immediately.Service.Statestate()Returns the lifecycle state of the service.ListenableFuture<Service.State>stop()Deprecated.Service.StatestopAndWait()Deprecated.ServicestopAsync()java.lang.StringtoString()
-
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
start
@Deprecated public final ListenableFuture<Service.State> start()
Deprecated.Description copied from interface:ServiceIf the service state isService.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.- Specified by:
startin interfaceService- Returns:
- a future for the startup result, regardless of whether this call initiated startup.
Calling
Future.get()will block until the service has finished starting, and returns one ofService.State.RUNNING,Service.State.STOPPINGorService.State.TERMINATED. If the service fails to start,Future.get()will throw anExecutionException, and the service's state will beService.State.FAILED. If it has already finished starting,Future.get()returns immediately. Cancelling this future has no effect on the service.
-
startAndWait
@Deprecated public final Service.State startAndWait()
Deprecated.Description copied from interface:ServiceInitiates service startup (if necessary), returning once the service has finished starting. Unlike callingstart().get(), this method throws no checked exceptions, and it cannot be interrupted.- Specified by:
startAndWaitin interfaceService- Returns:
- the state of the service when startup finished.
-
isRunning
public final boolean isRunning()
Description copied from interface:ServiceReturnstrueif this service is running.
-
state
public final Service.State state()
Description copied from interface:ServiceReturns the lifecycle state of the service.
-
stop
@Deprecated public final ListenableFuture<Service.State> stop()
Deprecated.Description copied from interface:ServiceIf the service is starting or running, this initiates service shutdown and returns immediately. If the service is new, it is terminated without having been started nor stopped. If the service has already been stopped, this method returns immediately without taking action.- Specified by:
stopin interfaceService- Returns:
- a future for the shutdown result, regardless of whether this call initiated shutdown.
Calling
Future.get()will block until the service has finished shutting down, and either returnsService.State.TERMINATEDor throws anExecutionException. If it has already finished stopping,Future.get()returns immediately. Cancelling this future has no effect on the service.
-
stopAndWait
@Deprecated public final Service.State stopAndWait()
Deprecated.Description copied from interface:ServiceInitiates service shutdown (if necessary), returning once the service has finished stopping. If this isService.State.STARTING, startup will be cancelled. If this isService.State.NEW, it isterminatedwithout having been started nor stopped. Unlike callingstop().get(), this method throws no checked exceptions.- Specified by:
stopAndWaitin interfaceService- Returns:
- the state of the service when shutdown finished.
-
addListener
public final void addListener(Service.Listener listener, java.util.concurrent.Executor executor)
Description copied from interface:ServiceRegisters aService.Listenerto be executed on the given executor. The listener will have the corresponding transition method called whenever the service changes state. The listener will not have previous state changes replayed, so it is suggested that listeners are added before the service starts.There is no guaranteed ordering of execution of listeners, but any listener added through this method is guaranteed to be called whenever there is a state change.
Exceptions thrown by a listener will be propagated up to the executor. Any exception thrown during
Executor.execute(e.g., aRejectedExecutionExceptionor an exception thrown by inline execution) will be caught and logged.- Specified by:
addListenerin interfaceService- Parameters:
listener- the listener to run when the service changes state is completeexecutor- the executor in which the listeners callback methods will be run. For fast, lightweight listeners that would be safe to execute in any thread, considerMoreExecutors.sameThreadExecutor().- Since:
- 13.0
-
failureCause
public final java.lang.Throwable failureCause()
Description copied from interface:ServiceReturns theThrowablethat caused this service to fail.- Specified by:
failureCausein interfaceService- Since:
- 14.0
-
startAsync
public final Service startAsync()
Description copied from interface:ServiceIf the service state isService.State.NEW, this initiates service startup and returns immediately. A stopped service may not be restarted.- Specified by:
startAsyncin interfaceService- Returns:
- this
- Since:
- 15.0
-
stopAsync
public final Service stopAsync()
Description copied from interface:ServiceIf the service is starting or running, this initiates service shutdown and returns immediately. If the service is new, it is terminated without having been started nor stopped. If the service has already been stopped, this method returns immediately without taking action.
-
awaitRunning
public final void awaitRunning()
Description copied from interface:ServiceWaits for theServiceto reach the running state.- Specified by:
awaitRunningin interfaceService- Since:
- 15.0
-
awaitRunning
public final void awaitRunning(long timeout, java.util.concurrent.TimeUnit unit) throws java.util.concurrent.TimeoutExceptionDescription copied from interface:ServiceWaits for theServiceto reach the running state for no more than the given time.- Specified by:
awaitRunningin interfaceService- Parameters:
timeout- the maximum time to waitunit- the time unit of the timeout argument- Throws:
java.util.concurrent.TimeoutException- if the service has not reached the given state within the deadline- Since:
- 15.0
-
awaitTerminated
public final void awaitTerminated()
Description copied from interface:ServiceWaits for theServiceto reach the terminated state.- Specified by:
awaitTerminatedin interfaceService- Since:
- 15.0
-
awaitTerminated
public final void awaitTerminated(long timeout, java.util.concurrent.TimeUnit unit) throws java.util.concurrent.TimeoutExceptionDescription copied from interface:ServiceWaits for theServiceto reach a terminal state (eitherterminatedorfailed) for no more than the given time.- Specified by:
awaitTerminatedin interfaceService- Parameters:
timeout- the maximum time to waitunit- the time unit of the timeout argument- Throws:
java.util.concurrent.TimeoutException- if the service has not reached the given state within the deadline- Since:
- 15.0
-
-