org.apache.commons.lang3.concurrent
Class ConcurrentUtils

java.lang.Object
  extended by org.apache.commons.lang3.concurrent.ConcurrentUtils

public class ConcurrentUtils
extends Object

An utility class providing functionality related to the java.util.concurrent package.

Version:
$Id: ConcurrentUtils.java 929189 2010-03-30 16:49:22Z oheger $
Author:
Apache Software Foundation

Method Summary
static
<T> Future<T>
constantFuture(T value)
           Gets an implementation of Future that is immediately done and returns the specified constant value.
static ConcurrentException extractCause(ExecutionException ex)
          Inspects the cause of the specified ExecutionException and creates a ConcurrentException with the checked cause if necessary.
static ConcurrentRuntimeException extractCauseUnchecked(ExecutionException ex)
          Inspects the cause of the specified ExecutionException and creates a ConcurrentRuntimeException with the checked cause if necessary.
static void handleCause(ExecutionException ex)
          Handles the specified ExecutionException.
static void handleCauseUnchecked(ExecutionException ex)
          Handles the specified ExecutionException and transforms it into a runtime exception.
static
<T> T
initialize(ConcurrentInitializer<T> initializer)
          Invokes the specified ConcurrentInitializer and returns the object produced by the initializer.
static
<T> T
initializeUnchecked(ConcurrentInitializer<T> initializer)
          Invokes the specified ConcurrentInitializer and transforms occurring exceptions to runtime exceptions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

extractCause

public static ConcurrentException extractCause(ExecutionException ex)
Inspects the cause of the specified ExecutionException and creates a ConcurrentException with the checked cause if necessary. This method performs the following checks on the cause of the passed in exception:

Parameters:
ex - the exception to be processed
Returns:
a ConcurrentException with the checked cause

extractCauseUnchecked

public static ConcurrentRuntimeException extractCauseUnchecked(ExecutionException ex)
Inspects the cause of the specified ExecutionException and creates a ConcurrentRuntimeException with the checked cause if necessary. This method works exactly like extractCause(ExecutionException). The only difference is that the cause of the specified ExecutionException is extracted as a runtime exception. This is an alternative for client code that does not want to deal with checked exceptions.

Parameters:
ex - the exception to be processed
Returns:
a ConcurrentRuntimeException with the checked cause

handleCause

public static void handleCause(ExecutionException ex)
                        throws ConcurrentException
Handles the specified ExecutionException. This method calls extractCause(ExecutionException) for obtaining the cause of the exception - which might already cause an unchecked exception or an error being thrown. If the cause is a checked exception however, it is wrapped in a ConcurrentException, which is thrown. If the passed in exception is null or has no cause, the method simply returns without throwing an exception.

Parameters:
ex - the exception to be handled
Throws:
ConcurrentException - if the cause of the ExecutionException is a checked exception

handleCauseUnchecked

public static void handleCauseUnchecked(ExecutionException ex)
Handles the specified ExecutionException and transforms it into a runtime exception. This method works exactly like handleCause(ExecutionException), but instead of a ConcurrentException it throws a ConcurrentRuntimeException. This is an alternative for client code that does not want to deal with checked exceptions.

Parameters:
ex - the exception to be handled
Throws:
ConcurrentRuntimeException - if the cause of the ExecutionException is a checked exception; this exception is then wrapped in the thrown runtime exception

initialize

public static <T> T initialize(ConcurrentInitializer<T> initializer)
                    throws ConcurrentException
Invokes the specified ConcurrentInitializer and returns the object produced by the initializer. This method just invokes the get() method of the given ConcurrentInitializer. It is null-safe: if the argument is null, result is also null.

Type Parameters:
T - the type of the object produced by the initializer
Parameters:
initializer - the ConcurrentInitializer to be invoked
Returns:
the object managed by the ConcurrentInitializer
Throws:
ConcurrentException - if the ConcurrentInitializer throws an exception

initializeUnchecked

public static <T> T initializeUnchecked(ConcurrentInitializer<T> initializer)
Invokes the specified ConcurrentInitializer and transforms occurring exceptions to runtime exceptions. This method works like initialize(ConcurrentInitializer), but if the ConcurrentInitializer throws a ConcurrentException, it is caught, and the cause is wrapped in a ConcurrentRuntimeException. So client code does not have to deal with checked exceptions.

Type Parameters:
T - the type of the object produced by the initializer
Parameters:
initializer - the ConcurrentInitializer to be invoked
Returns:
the object managed by the ConcurrentInitializer
Throws:
ConcurrentRuntimeException - if the initializer throws an exception

constantFuture

public static <T> Future<T> constantFuture(T value)

Gets an implementation of Future that is immediately done and returns the specified constant value.

This can be useful to return a simple constant immediately from the concurrent processing, perhaps as part of avoiding nulls. A constant future can also be useful in testing.

Parameters:
value - the constant value to return, may be null
Returns:
an instance of Future that will return the value, never null


Copyright © 2001-2010 The Apache Software Foundation. All Rights Reserved.