线程模型与AKKA

线程模型与AKKA,akka,actor,future,Akka,Actor,Future,我在某处听说,默认情况下是一个Actor系统,这意味着它的ExecutorService/Dispatcher正在创建一个非Deamon线程池来运行Actor。如果真的是这样的话,这可以解释我所经历的一些行为,我可以在AKKA的文档中找到它。我的意思是,在文档的最后一个版本中,没有任何内容说明这一点。同时,这一点也发生了变化 有些人使用了主线程中的终止,以防止程序不关闭正在运行的actor系统。我见过这样的代码片段 但后来我意识到这是没有用的 这种行为仍然让我困惑不解,我继续用期货做实验,但它不

我在某处听说,默认情况下是一个Actor系统,这意味着它的ExecutorService/Dispatcher正在创建一个非Deamon线程池来运行Actor。如果真的是这样的话,这可以解释我所经历的一些行为,我可以在AKKA的文档中找到它。我的意思是,在文档的最后一个版本中,没有任何内容说明这一点。同时,这一点也发生了变化

有些人使用了主线程中的终止,以防止程序不关闭正在运行的actor系统。我见过这样的代码片段

但后来我意识到这是没有用的

这种行为仍然让我困惑不解,我继续用期货做实验,但它不起作用,我不得不堵住我的主干道。但是,当在演员中使用时,它会起作用。这是因为未来是在守护进程线程中运行的

理解这些差异非常重要

当一个导入ExecutionContext.implicit.global时:

1-运行future时,执行上下文是Deamon线程池还是非Deamon线程池

2-当一个演员在经营未来时?发生了什么,与在actor context.dispatcher中导入相同吗?在这种情况下,启动Actorsystem时,ExecutionContext.implicit.global值是否会更改为具有非守护进程线程池的executorService


如果有人能帮我澄清一下ExecutionContext.implicit.global的价值,我将不胜感激。在没有参与者的情况下,在参与者的情况下,在参与者的情况下,以及在参与者内部的未来的情况下,ExecutionContext.implicit.global的价值是什么?特别是,它管理的是什么类型的线程(关于前面引用的上下文)?如果可能的话,提供一份关于它的文档

java.util.concurrent.ThreadFactory
创建Deamon或非Deamon类型的线程

默认情况下,
ExecutionContext.global
使用
ForkJoinPool
和线程工厂来生成守护进程线程

在akka配置中有
akka.daemonic
属性,默认情况下该属性为
off
(在
reference.conf
中)。为默认调度程序和调度程序创建默认线程工厂时使用此标志

最好的文档是Akka和Scala库的源代码

我有类似的问题,没有关闭Tomcat容器中的喷雾应用程序。使用Java任务控制,我发现在成功关闭actor系统后,调度程序线程在
akka.actor.lightArrayRevolversScheduler.waitNanos(long)
中休眠。设置
akka.daemonic=on
修复了此问题