В настоящее время я думаю об использовании Akka (Java API/библиотеки) для выполнения задачи создания нескольких Future
и помещения их в BlockingQueue
. Теперь может случиться так, что некоторые задачи, которые обрабатываются Callables, быстрее/быстрее выполняются в вызывающем потоке вместо создания нового потока или ожидания доступности нового потока. Я думаю, что Akka делает именно это, например, если я бегу:
Future<String> f1 = future(new Callable<String>() {
public String call() {
return "Hello" + "World";
}
});
Это может быть выполнено в текущем потоке, который вызывает future (Callable), или я ошибаюсь? Возможно, я ошибаюсь, потому что не понимаю, как диспетчер решит, будет ли создан новый поток или нет.
Прямо сейчас я просто использую ExecutorService, который использует другие потоки, но, поскольку некоторые задачи действительно очень быстрые, они также могут быть обработаны текущим потоком. Но я использую BlockingQueue<Future<Float>>
, поэтому я иногда не могу использовать Future
, а иногда нет.
С наилучшими пожеланиями,
Йоханнес