Пожалуйста, внимательно прочитайте вопрос, прежде чем отмечать это как дубликат.
Ниже приведен фрагмент псевдокода. Мой вопрос: не соответствует ли приведенный ниже код самому понятию параллельной асинхронной обработки?
Причина, по которой я спрашиваю об этом, заключается в том, что в приведенном ниже коде основной поток будет отправлять задачу в другой поток. После отправки задания в очередь он блокирует метод Future.get() для задачи, чтобы вернуть значение. Я предпочел бы, чтобы задача выполнялась в основном потоке, а не отправлялась в другой поток и ожидала результатов. Что я получил, выполнив задачу в новом потоке?
Я знаю, что вы можете подождать ограниченное время и т.д., но тогда что, если я действительно забочусь о результате? Проблема ухудшается, если выполняются несколько задач. Мне кажется, что мы просто делаем работу синхронно. Я знаю о библиотеке Guava, которая предоставляет неблокирующий интерфейс прослушивателя. Но мне интересно узнать, верно ли мое понимание для API Future.get(). Если это правильно, почему Future.get() предназначен для блокировки, тем самым побеждая весь процесс параллельной обработки?
Примечание. Для записи я использую JAVA 6
public static void main(String[] args){
private ExectorService executorService = ...
Future future = executorService.submit(new Callable(){
public Object call() throws Exception {
System.out.println("Asynchronous Callable");
return "Callable Result";
}
});
System.out.println("future.get() = " + future.get());
}