为什么这个简单的Akka Streams程序永远不会终止?

马修·亚当斯(Matthew Adams)

应该是一个简单的问题。我正在使用Akka 2.4.2(包含Akka流和HTTP)。我希望此操作Source能够完成并终止该程序,因为该操作Source是有限的,但它永远不会终止为什么该程序不终止?

import scala.concurrent._
import scala.collection.immutable._
import akka._
import akka.actor._
import akka.stream._
import akka.stream.scaladsl._
import akka.util._

object Test extends App {

  implicit val system = ActorSystem("TestSystem")
  implicit val materializer = ActorMaterializer()

  val s = Source.single(1)
  s.runForeach(println)
}

输出:

$ sbt run
...
[info] Running Test
[DEBUG] [02/23/2016 10:59:19.904] [run-main-0] [EventStream(akka://TestSystem)] logger log1-Logging$DefaultLogger started
[DEBUG] [02/23/2016 10:59:19.904] [run-main-0] [EventStream(akka://TestSystem)] Default Loggers started
1

build.sbt文件的相关部分

scalaVersion  := "2.11.7"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

libraryDependencies ++= {
  val akkaVersion = "2.4.2"
  Seq(
    "com.typesafe.akka" %%  "akka-stream" % akkaVersion
  )
}
Konrad'ktoso'马拉劳斯基

由于Akka使用非守护线程,因此它将保持应用程序运行,直到您关闭ActorSystem那是因为典型的用例是在您的main方法中启动系统,然后所有计算都在ActorSystem管理的main()线程上进行(即该线程要完成并消失-如果这些线程是守护进程,则该应用会关闭,这不是我们通常想要的)。

您可以通过以下方式进行操作:

import system.dispatcher
s.runForeach(println).onComplete { _ =>  system.terminate() }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么节点程序永远不会终止?

来自分类Dev

为什么for(;;)永远不会终止?

来自分类Dev

为什么这个简单的pygame程序滞后?

来自分类Dev

为什么此Haskell代码永远不会终止?

来自分类Dev

为什么这个简单的Node程序不阻塞?

来自分类Dev

为什么这个简单的jsp程序没有运行?

来自分类Dev

为什么这个简单的android应用程序是递归的?

来自分类Dev

为什么这个简单的jsp程序没有运行?

来自分类Dev

为什么我的简单程序永远不会退出while循环?

来自分类Dev

为什么我的简单程序永远不会退出while循环?

来自分类Dev

为什么这个asyncio.Task永远不会完成取消?

来自分类Dev

为什么这个 js IF 条件永远不会评估为真?

来自分类Dev

这个C程序为什么不会崩溃?

来自分类Dev

为什么我的变更处理程序永远不会被解雇?

来自分类Dev

为什么 Mac 应用程序永远不会“关闭”?

来自分类Dev

如果我在脚本中更改用户,为什么运行su的脚本似乎永远不会终止?

来自分类Dev

如果我在脚本中更改用户,为什么运行su的脚本似乎永远不会终止?

来自分类Dev

为什么这个简单的Spark程序不能使用多个内核?

来自分类Dev

为什么我不能启动这个简单的FXML hello world应用程序?

来自分类Dev

为什么这个简单的链表程序会产生分段错误?

来自分类Dev

为什么我不能在JSFiddle中执行这个简单的JavaScript测试程序?

来自分类Dev

为什么这个简单的 GTK3 应用程序消耗这么多内存?

来自分类Dev

为什么这个简单的程序会因超过 10 的值而中断

来自分类Dev

为什么简单Java应用程序中的这个简单计数器增加两次?

来自分类Dev

Akka石英调度程序永远不会触发我的演员

来自分类Dev

为什么这个while循环不终止?

来自分类Dev

为什么这个带有“abort()”的 C 程序不会崩溃?

来自分类Dev

为什么这个简单的线程C ++程序在退出时会崩溃,除非我调用thread.join()?

来自分类Dev

为什么通过GLFW进行的这个简单的OpenGL程序在Intel HD P4600上不起作用?

Related 相关文章

  1. 1

    为什么节点程序永远不会终止?

  2. 2

    为什么for(;;)永远不会终止?

  3. 3

    为什么这个简单的pygame程序滞后?

  4. 4

    为什么此Haskell代码永远不会终止?

  5. 5

    为什么这个简单的Node程序不阻塞?

  6. 6

    为什么这个简单的jsp程序没有运行?

  7. 7

    为什么这个简单的android应用程序是递归的?

  8. 8

    为什么这个简单的jsp程序没有运行?

  9. 9

    为什么我的简单程序永远不会退出while循环?

  10. 10

    为什么我的简单程序永远不会退出while循环?

  11. 11

    为什么这个asyncio.Task永远不会完成取消?

  12. 12

    为什么这个 js IF 条件永远不会评估为真?

  13. 13

    这个C程序为什么不会崩溃?

  14. 14

    为什么我的变更处理程序永远不会被解雇?

  15. 15

    为什么 Mac 应用程序永远不会“关闭”?

  16. 16

    如果我在脚本中更改用户,为什么运行su的脚本似乎永远不会终止?

  17. 17

    如果我在脚本中更改用户,为什么运行su的脚本似乎永远不会终止?

  18. 18

    为什么这个简单的Spark程序不能使用多个内核?

  19. 19

    为什么我不能启动这个简单的FXML hello world应用程序?

  20. 20

    为什么这个简单的链表程序会产生分段错误?

  21. 21

    为什么我不能在JSFiddle中执行这个简单的JavaScript测试程序?

  22. 22

    为什么这个简单的 GTK3 应用程序消耗这么多内存?

  23. 23

    为什么这个简单的程序会因超过 10 的值而中断

  24. 24

    为什么简单Java应用程序中的这个简单计数器增加两次?

  25. 25

    Akka石英调度程序永远不会触发我的演员

  26. 26

    为什么这个while循环不终止?

  27. 27

    为什么这个带有“abort()”的 C 程序不会崩溃?

  28. 28

    为什么这个简单的线程C ++程序在退出时会崩溃,除非我调用thread.join()?

  29. 29

    为什么通过GLFW进行的这个简单的OpenGL程序在Intel HD P4600上不起作用?

热门标签

归档