/** * Run a task through the given direct executor, invoking the given notifier with the given attachment. * * @param task the task * @param directExecutor the executor * @param notifier the notifier * @param attachment the attachment * @param <R> the task type * @param <A> the attachment type */ public static <R extends Runnable, A> void run(R task, DirectExecutor directExecutor, TaskNotifier<? super R, ? super A> notifier, A attachment) { started(notifier, task, attachment); boolean ok = false; try { directExecutor.execute(task); ok = true; } catch (RuntimeException t) { failed(notifier, t, task, attachment); throw t; } catch (Error t) { failed(notifier, t, task, attachment); throw t; } catch (Throwable t) { failed(notifier, t, task, attachment); throw Messages.msg.unknownThrowable(t); } finally { if (ok) finished(notifier, task, attachment); } }
/** * Run a task through the given direct executor, invoking the given notifier with the given attachment. * * @param task the task * @param directExecutor the executor * @param notifier the notifier * @param attachment the attachment * @param <R> the task type * @param <A> the attachment type */ public static <R extends Runnable, A> void run(R task, DirectExecutor directExecutor, TaskNotifier<? super R, ? super A> notifier, A attachment) { started(notifier, task, attachment); boolean ok = false; try { directExecutor.execute(task); ok = true; } catch (RuntimeException t) { failed(notifier, t, task, attachment); throw t; } catch (Error t) { failed(notifier, t, task, attachment); throw t; } catch (Throwable t) { failed(notifier, t, task, attachment); throw Messages.msg.unknownThrowable(t); } finally { if (ok) finished(notifier, task, attachment); } }
/** * Run a task through the given direct executor, invoking the given notifier with the given attachment. * * @param task the task * @param directExecutor the executor * @param notifier the notifier * @param attachment the attachment * @param <R> the task type * @param <A> the attachment type */ public static <R extends Runnable, A> void run(R task, DirectExecutor directExecutor, TaskNotifier<? super R, ? super A> notifier, A attachment) { started(notifier, task, attachment); boolean ok = false; try { directExecutor.execute(task); ok = true; } catch (RuntimeException t) { failed(notifier, t, task, attachment); throw t; } catch (Error t) { failed(notifier, t, task, attachment); throw t; } catch (Throwable t) { failed(notifier, t, task, attachment); throw Messages.msg.unknownThrowable(t); } finally { if (ok) finished(notifier, task, attachment); } }