我是网络开发的新手,有一个小问题。我正在使用scala-akka与喷雾制作一个网站。我的领导给了我一个问题:我有这样的回答
case HttpRequest(GET, Uri.Path("/ping"), _, _, _) => {
Thread.sleep(10)
sender ! HttpResponse(entity = "this is t2")
}
Thread.sleep(10)表示一个重线程,它的处理时间是10ms,所以它使整个程序运行速度慢了1000倍,那么我如何使它多检索10倍HTTPRequest呢?提示使用了actors,但不知何故,我阅读了整个文档,但仍然缺少一些
一种方法:
case HttpRequest(GET, Uri.Path("/ping"), _, _, _) => {
val replyTo = sender
Future {
someCPUIntensiveFunction()
replyTo ! HttpResponse(entity = "this is t2")
}
}
基本上,您将"重函数"调用转移到Future中。这将使接收HttpRequest的当前线程在创建未来线程时立即继续,并能够处理下一个HttpRequest。未来将在一个单独的线程中执行其代码。因此,您的程序中将有两条"路径"。一个将处理HttpRequest,另一个将执行someCPUIntensiveFunction()