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