J'ai essayé de le comprendre moi-même, mais les coutures que les gars à Akka ne veulent pas que la gestion des threads soit exposée au public.
ThreadPoolConfig - la classe qui est responsable de la création d'instances ExecutorService est une classe de cas avec la méthode createExecutorService() a déclaré finale!
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)
}
}
Donc, je ne vois pas de moyen facile de fournir votre propre ExecutorService.
Ceci n'est pas correct, vous pouvez écrire votre propre implémentation de MessageDispatcher (étendre le trait) et le passer aux Acteurs comme dans la réponse paradigmatique. Dans l'implémentation de MessageDispatcher, vous pouvez choisir d'utiliser n'importe quel executorservice. La méthode que vous mentionnez est uniquement utilisée par ExecutorBasedEventDrivenDispatcher. –
Comment puis-je faire cela si le trait MessageDispatcher a quelque chose comme ceci ** private [akka] def dispatch (invocation: MessageInvocation): Unité ** – Alex
@Raymond Roestenburg ** private [akka] def start(): Unité * * Comme je comprends c'est la méthode privée de paquet et Cannod être accessible en dehors de Akka. – Alex