线程模型与AKKA
我在某处听说,默认情况下是一个Actor系统,这意味着它的ExecutorService/Dispatcher正在创建一个非Deamon线程池来运行Actor。如果真的是这样的话,这可以解释我所经历的一些行为,我可以在AKKA的文档中找到它。我的意思是,在文档的最后一个版本中,没有任何内容说明这一点。同时,这一点也发生了变化 有些人使用了主线程中的终止,以防止程序不关闭正在运行的actor系统。我见过这样的代码片段 但后来我意识到这是没有用的 这种行为仍然让我困惑不解,我继续用期货做实验,但它不起作用,我不得不堵住我的主干道。但是,当在演员中使用时,它会起作用。这是因为未来是在守护进程线程中运行的 理解这些差异非常重要 当一个导入ExecutionContext.implicit.global时: 1-运行future时,执行上下文是Deamon线程池还是非Deamon线程池 2-当一个演员在经营未来时?发生了什么,与在actor context.dispatcher中导入相同吗?在这种情况下,启动Actorsystem时,ExecutionContext.implicit.global值是否会更改为具有非守护进程线程池的executorService线程模型与AKKA,akka,actor,future,Akka,Actor,Future,我在某处听说,默认情况下是一个Actor系统,这意味着它的ExecutorService/Dispatcher正在创建一个非Deamon线程池来运行Actor。如果真的是这样的话,这可以解释我所经历的一些行为,我可以在AKKA的文档中找到它。我的意思是,在文档的最后一个版本中,没有任何内容说明这一点。同时,这一点也发生了变化 有些人使用了主线程中的终止,以防止程序不关闭正在运行的actor系统。我见过这样的代码片段 但后来我意识到这是没有用的 这种行为仍然让我困惑不解,我继续用期货做实验,但它不
如果有人能帮我澄清一下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
修复了此问题