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
Interface Service

All Known Implementing Classes:
  AbstractExecutionThreadService, AbstractIdleService, AbstractService, ForwardingService

    @Beta
    public interface Service

An object with an operational state, plus asynchronous `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`

If the service fails while starting, running or stopping, its state will be `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.

Since:
  9.0 (in 1.0 as `com.google.common.base.Service`)
Author:
  Jesse Wilson

Nested Class Summary
`static class` | `Service.State` The lifecycle states of a service.

Method Summary
`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()` 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.

Method Detail

### start

    ListenableFuture<Service.State> start()

  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.

  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

    Service.State startAndWait()

  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.

  Returns:
    the state of the service when startup finished.
  Throws:
    `UncheckedExecutionException` - if startup failed

### isRunning

    boolean isRunning()

  Returns `true` if this service is running.

### state

    Service.State state()

  Returns the lifecycle state of the service.

### stop

    ListenableFuture<Service.State> stop()

  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.

  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

    Service.State stopAndWait()

  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.

  Returns:
    the state of the service when shutdown finished.
  Throws:
    `UncheckedExecutionException` - if shutdown failed

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.