package dk.thoerup.circuitbreaker.notification; import java.util.concurrent.ExecutorService; import dk.thoerup.circuitbreaker.CircuitBreaker; public abstract class AsyncNotifier implements Notifier { public final void sendNotification(CircuitBreaker breaker, Event evnt) { ExecutorService exec = breaker.getExecutor(); exec.submit( new AsyncRunnable(breaker, evnt) ); } public abstract void sendAsync(CircuitBreaker breaker, Event evnt); public class AsyncRunnable implements Runnable { CircuitBreaker breaker; Event evnt; public AsyncRunnable(CircuitBreaker breaker, Event evnt) { this.breaker = breaker; this.evnt = evnt; } public void run() { sendAsync(breaker, evnt); } } }