Собственно, ExecutorService предоставляет наиболее близкую мне идею.Вот как вы можете использовать ExecutorService, чтобы запустить метод async, а затем получить возвращаемое значение:
ExecutorService executor = Executors.newFixedThreadPool(NTHREDS);
Future<String> future = executor.submit(new Callable<String>() {
return getSomeLongRunningSomethingHere();
});
//... do other stuff here
String rtnValue = future.get(); //get blocks until the original finishes running
System.out.println(rtnValue);