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.State`

Constructor Summary
`AbstractExecutionThreadService()`

Method Summary
`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

    public AbstractExecutionThreadService()

Method Detail

### startUp

    protected void startUp()
                    throws Exception

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

  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.

  Throws:
    `Exception`

### triggerShutdown

    protected void triggerShutdown()

  Invoked to request the service to stop.

### 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.

### 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 the returned future is unsupported and always returns `false`.

### 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 is unsupported and always returns `false`.

### 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.

### 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-2011. All Rights Reserved.