Java 7 doesn't have any existing abstractions (except Future, which cannot be used without blocking of the thread), so you need something: guava ListanableFuture, RxJava single etc
Alternatively, if you don't want add dependencies to 3rd party libraries, introduce own Promise-like abstraction and write coroutines adapter for it, or just expose this API as simple callback