Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.google.common.util.concurrent
Class AbstractExecutionThreadService

    java.lang.Object
      com.google.common.util.concurrent.AbstractExecutionThreadService

All Implemented Interfaces:
  Service

    @Beta
    public abstract class AbstractExecutionThreadService

extends Object
implements Service

Base class for services that can implement `startUp()`, `run()` and `shutDown()` methods. This class uses a single thread to execute the service; consider `AbstractService` if you would like to manage any threading manually.

Since:
  1.0
Author:
  Jesse Wilson

Nested Class Summary

Nested classes/interfaces inherited from interface com.google.common.util.concurrent.Service
`Service.Listener, Service.State`

Constructor Summary
`protected` | `AbstractExecutionThreadService()` Constructor for use by subclasses.

Method Summary
`void` | `addListener(Service.Listener listener, Executor executor)` Registers a `Service.Listener` to be executed on the given executor.
`protected Executor` | `executor()` Returns the `Executor` that will be used to run this service.
`protected String` | `getServiceName()` Returns the name of this service.
`boolean` | `isRunning()` Returns `true` if this service is running.
`protected abstract void` | `run()` Run the service.
`protected void` | `shutDown()` Stop the service.
`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.
`protected void` | `startUp()` Start the service.
`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()`
`protected void` | `triggerShutdown()` Invoked to request the service to stop.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### AbstractExecutionThreadService

    protected AbstractExecutionThreadService()

  Constructor for use by subclasses.

Method Detail

### startUp

    protected void startUp()
                    throws Exception

  Start the service. This method is invoked on the execution thread.

  By default this method does nothing.

  Throws:
    `Exception`

### run

    protected abstract void run()
                         throws Exception

  Run the service. This method is invoked on the execution thread. Implementations must respond to stop requests. You could poll for lifecycle changes in a work loop:

         public void run() {
           while (isRunning()) {
             // perform a unit of work
           }
         }

  ...or you could respond to stop requests by implementing `triggerShutdown()`, which should cause `run()` to return.

  Throws:
    `Exception`

### shutDown

    protected void shutDown()
                     throws Exception

  Stop the service. This method is invoked on the execution thread.

  By default this method does nothing.

  Throws:
    `Exception`

### triggerShutdown

    protected void triggerShutdown()

  Invoked to request the service to stop.

  By default this method does nothing.

### executor

    protected Executor executor()

  Returns the `Executor` that will be used to run this service. Subclasses may override this method to use a custom `Executor`, which may configure its worker thread with a specific name, thread group or priority. The returned executor's `execute()` method is called when this service is started, and should return promptly.

  The default implementation returns a new `Executor` that sets the name of its threads to the string returned by `getServiceName()`

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### start

    public final ListenableFuture<Service.State> start()

  Description copied from interface: `Service`
  If the service state is `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.

  Specified by:
    `start` in interface `Service`
  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 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 this future has no effect on the service.

### startAndWait

    public final Service.State startAndWait()

  Description copied from interface: `Service`
  Initiates service startup (if necessary), returning once the service has finished starting. Unlike calling `start().get()`, this method throws no checked exceptions, and it cannot be interrupted.

  Specified by:
    `startAndWait` in interface `Service`
  Returns:
    the state of the service when startup finished.

### isRunning

    public final boolean isRunning()

  Description copied from interface: `Service`
  Returns `true` if this service is running.

  Specified by:
    `isRunning` in interface `Service`

### state

    public final Service.State state()

  Description copied from interface: `Service`
  Returns the lifecycle state of the service.

  Specified by:
    `state` in interface `Service`

### stop

    public final ListenableFuture<Service.State> stop()

  Description copied from interface: `Service`
  If 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:
    `stop` in interface `Service`
  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 returns `Service.State.TERMINATED` or throws an `ExecutionException`. If it has already finished stopping, `Future.get()` returns immediately. Cancelling this future has no effect on the service.

### stopAndWait

    public final Service.State stopAndWait()

  Description copied from interface: `Service`
  Initiates service shutdown (if necessary), returning once the service has finished stopping. If this is `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.

  Specified by:
    `stopAndWait` in interface `Service`
  Returns:
    the state of the service when shutdown finished.

### addListener

    public final void addListener(Service.Listener listener,
                                  Executor executor)

  Description copied from interface: `Service`
  Registers a `Service.Listener` to 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., a `RejectedExecutionException` or an exception thrown by inline execution) will be caught and logged.

  Specified by:
    `addListener` in interface `Service`
  Parameters:
    `listener` - the listener to run when the service changes state is complete
    `executor` - the executor in which the the listeners callback methods will be run. For fast, lightweight listeners that would be safe to execute in any thread, consider `MoreExecutors.sameThreadExecutor()`.

### getServiceName

    protected String getServiceName()

  Returns the name of this service. `AbstractExecutionThreadService` may include the name in debugging output.

  Subclasses may override this method.

  Since:
    10.0

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2010-2012. All Rights Reserved.