5

ドキュメントによると、アクターを使用する簡単な方法は次のとおりです。

プロミス promiseOfInt = Akka.future( new Callable() { public Integer call() { return ... ; } } );

しかし、ドキュメントには、Java API を使用すると、常に同じスレッド プールが使用される (デフォルトのスレッド プールを再生する) とも書かれています。

ドキュメントには、アクター用の Akka プールもあると記載されています。一般的なユーザー アクションをブロックするのではなく、このアクター タスクを Akka スレッド プールに送信するにはどうすればよいですか? したがって、Akka プールを調整して、デフォルト プールを小さく保つことができます。

ありがとう、ロイク

4

1 に答える 1

1

Java Akkaプラグイン ( play.libs.Akka) は Scala プラグイン ( )play.api.libs.Akkaに転送され、アプリの構成に基づいて新しいアクター システムが開始されます。(プラグインが行うのはこれだけです。)

そのため、構成キーに基づいて通常の application.conf ファイルを使用して、その ActorSystem とそのすべてのディスパッチャー (ディスパッチャーも ExecutionContext) を構成しますakka。これらのディスパッチャは、ドキュメントが参照しているスレッド プールです。

をインポートすると、デフォルトのスレッド プールplay.api.libs.concurrent.Execution.defaultが使用されます。これは Scala 専用の API です。Java では、future と promise に触れるとすぐに、この ExecutionContext が常に自動的に使用されます。このスレッドプールは、実際には Play の内部アクター システムに基づいており、playconfig キーを介して構成されています。

要約すると、すべてのアクターは、Akka プラグインの ActorSystem を介して作成されると、自動的に Akka スレッド プールを使用します (アクター内では、 を使用して参照できますcontext.dispatcher)。

外部アクターでは、Play のデフォルト/内部スレッド プールを使用します。

于 2014-10-02T14:21:00.400 に答える