Есть ли какие-либо преимущества результата обработки с использованием ListenableFuture
при отправке задач на ExecutorService
вместо того, чтобы делать это простым старым способом java, просто вызывая функцию, обрабатывающую результаты?ListenableFuture или функция вызова для обработки результата задачи?
Будущее:
Future<ScanResult> result = threadPoolExecutor.submit(
new Callable<ScanResult>() {
//long running process to get scanResult
return scanResult;
});
ScanResult sr = result.get();
ИЛИ использование гуавы ListenableFuture
предотвратить вручную get()
призвание.
Plain Java Путь:
threadPoolExecutor.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
//long running process to get scanResult
jobCompleted(scanResult);
return null;
}
});
Ваши примеры не имеют смысла. Похоже, это не то, как вы будете использовать будущее для прослушивания. –
@HovercraftFullOfEels вы правы, это пример нормального будущего, следовательно, добавление в код "(или используйте guava ListenableFuture для предотвращения вызова get() вручную). –
Нет, это не то, что я имею в виду. У вас нет долгого кода в Callable, и он ничего не возвращает, что уменьшает необходимость вызова 'get()'. –