У меня есть программа, в которой я загружаю файлы с S3 с использованием объекта Callable, переданного в ExecutorService. Файлы большие, и для полной загрузки требуется несколько минут. Имеет ли смысл создавать еще один класс Callable, который берет будущее от загрузчика и наблюдает за его завершением? Моя конечная цель - добавить все полные загрузки в расположенный в центре список в кеше.Наблюдение за будущим <T> объектов для заполнения с использованием ExecutorService
Например:
public void add(final String s3urlToDownload){
Future<S3Object> futureS3obj = cachedPoolExecutor.submit(new S3Downloader(s3urlToDownload));
// Instead of calling futureS3obj.get() and waiting, submit the Future to the "Watcher" service.
// Within FutureWatcher, the S3Object will be added to the List once the download is complete.
cachedPoolExecutor.submit(new FutureWatcher(downloadedList, futureS3obj))
}
В чем преимущество дополнительного 'Callable', если у вас уже есть« Будущее »? – Kayaman
@ Кайаман. Насколько я понимаю, если бы я назвал метод 'get()' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. Вот почему я представляю новый Callable 'FutureWatcher' – dmux
Так что же означает« Callable »? Вызов метода 'call()' также блокируется, поскольку он делегирует 'get()'. – Kayaman