/** * Create a new async result which exposes the given exception as an * {@link ExecutionException} from {@link Future#get()}. * @param ex the exception to expose (either an pre-built {@link ExecutionException} * or a cause to be wrapped in an {@link ExecutionException}) * @since 4.2 * @see ExecutionException */ public static <V> ListenableFuture<V> forExecutionException(Throwable ex) { return new AsyncResult<>(null, ex); }
@Async public Future<Integer> incrementReturningAFuture() { counter++; return new AsyncResult<Integer>(5); }
@Async public static class AsyncClassBeanWithInterface implements RegularInterface { public void doSomething(int i) { assertTrue(!Thread.currentThread().getName().equals(originalThreadName)); } public Future<String> returnSomething(int i) { assertTrue(!Thread.currentThread().getName().equals(originalThreadName)); return new AsyncResult<>(Integer.toString(i)); } }
@Hourly public void generateReport() { } }
@Async @Override public void doIt() { } }
@Async("e2") public Future<Thread> work3() { return new AsyncResult<>(Thread.currentThread()); } }
/** * Create a new async result which exposes the given value from {@link Future#get()}. * @param value the value to expose * @since 4.2 * @see Future#get() */ public static <V> ListenableFuture<V> forValue(V value) { return new AsyncResult<>(value, null); }
@Scheduled(cron = "0 0 9-17 * * MON-FRI") public String cron() { return "oops"; } }
@Async public interface AsyncInterface { void doSomething(int i); Future<String> returnSomething(int i); }
public Future<Integer> incrementReturningAFuture() { counter++; return new AsyncResult<Integer>(5); } }
@Scheduled(fixedDelay = 5000) public void fixedDelay() { } }
@Async public static class AsyncClassListener implements ApplicationListener<ApplicationEvent> { public AsyncClassListener() { listenerConstructed++; } @Override public void onApplicationEvent(ApplicationEvent event) { listenerCalled++; assertTrue(!Thread.currentThread().getName().equals(originalThreadName)); } }
@Override public Future<String> asyncFoo(int id) { return new AsyncResult<>("bar"); }
@Async @Override public void doIt() { } }