Class RunnableErrorForwarder


  • public final class RunnableErrorForwarder
    extends java.lang.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 Description
      RunnableErrorForwarder()
      Creates a new error forwarder for worker threads spawned by the current thread.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method 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.
      java.lang.Runnable wrap​(java.lang.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 java.lang.Runnable wrap​(java.lang.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.