Akka /期货 - Akka是否使用当前线程或调度员判断它是否“值得”?

时间:2011-09-16 01:07:20

标签: java akka future executorservice

我目前正在考虑使用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而有时不使用{{1}}。

最好的问候,
约翰内斯

1 个答案:

答案 0 :(得分:2)

它总是使用来自提供的调度程序的线程,如果没有指定任何人,则使用全局默认值。要使用相同的线程,您需要传入CallingThreadDispatcher,但它始终是同步的。除了程序员之外,任何人都无法决定计算是否便宜。