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