org.eclipse.aether.util.concurrency

## Class RunnableErrorForwarder

- java.lang.Object
- - org.eclipse.aether.util.concurrency.RunnableErrorForwarder

-     public final class RunnableErrorForwarder
      extends Object

  A utility class to forward any uncaught `Error` or `RuntimeException` from a `Runnable` executed in a worker thread back to the parent thread. The simplified usage pattern looks like this:

       RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
       for ( Runnable task : tasks )
       {
           executor.execute( errorForwarder.wrap( task ) );
       }
       errorForwarder.await();

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RunnableErrorForwarder()` Creates a new error forwarder for worker threads spawned by the current thread.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `await()` Causes the current thread to wait until all previously `wrapped` runnables have terminated and potentially re-throws an uncaught `RuntimeException` or `Error` from any of the runnables.
    `Runnable` | `wrap(Runnable runnable)` Wraps the specified runnable into an equivalent runnable that will allow forwarding of uncaught errors.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RunnableErrorForwarder

          public RunnableErrorForwarder()

      Creates a new error forwarder for worker threads spawned by the current thread.

  - ### Method Detail

    - #### wrap

          public Runnable wrap(Runnable runnable)

      Wraps the specified runnable into an equivalent runnable that will allow forwarding of uncaught errors.
      Parameters:
        `runnable` - The runnable from which to forward errors, must not be `null`.
      Returns:
        The error-forwarding runnable to eventually execute, never `null`.

    - #### await

          public void await()

      Causes the current thread to wait until all previously `wrapped` runnables have terminated and potentially re-throws an uncaught `RuntimeException` or `Error` from any of the runnables. In case multiple runnables encountered uncaught errors, one error is arbitrarily selected. Note: This method must be called from the same thread that created this error forwarder instance.

Copyright © 2010-2014 The Eclipse Foundation. All Rights Reserved.