1

非常にばかげた質問になる可能性があります--

アクターが使用するスレッドを制御するように Akka/Scala アクターをカスタマイズすることは可能ですか? たとえば、スレッド プールで使用する独自のスレッド セットを初期化できますか。そうでなければ、スレッドを制御/変更できますか?

4

2 に答える 2

4

Akka では、スレッド プールは MessageDispatcher インスタンスを介して管理されます。アクターに必要なディスパッチャーを簡単に設定できます。

class MyActor( dispatcher: MessageDispatcher ) extends Actor {
  self.dispatcher = dispatcher
  ...
}

独自のディスパッチャーを提供するには、拡張できますakka.dispatch.MessageDispatcher(例については、既存のディスパッチャーの実装を参照してください)。ここでは、スレッドを直接操作できます。

もちろん、ディスパッチャ内にビジネス ロジックを配置するのは危険です。アクター モデルが壊れて、同時実行のバグが増える可能性があるからです。

于 2011-07-28T07:19:29.603 に答える
-1

私はそれを自分で理解しようとしましたが、Akka の連中がスレッド管理を公開したくないという縫い目です。

ThreadPoolConfig - ExecutorServiceインスタンスの作成を担当するクラスは、メソッド createExecutorService() がfinalと宣言されたケース クラスです。

  final def createExecutorService(threadFactory: ThreadFactory): ExecutorService = {
    flowHandler match {
      case Left(rejectHandler) ⇒
        val service = new ThreadPoolExecutor(...)
        service
      case Right(bounds) ⇒
        val service = new ThreadPoolExecutor(...)
        new BoundedExecutorDecorator(service, bounds)
    }
  }

そのため、独自の ExecutorService を提供する簡単な方法がわかりません。

于 2011-08-04T10:16:37.220 に答える