【发布时间】:2026-02-09 05:45:01
【问题描述】:
我正在尝试使用 Akka 框架同时写入多个文件,首先我创建了一个名为 MyWriter 的类来写入文件,然后使用期货我调用该对象两次跳跃,将为我创建 2 个文件,但是当我监视程序的执行,它首先填充第一个文件,然后填充第二个文件(阻塞/同步)。
问:如何让下面的代码运行(非阻塞/异步)
import akka.actor._
import akka.dispatch._
import akka.pattern.ask
import akka.util.Timeout
import scala.concurrent.Await
import scala.concurrent.duration._
import scala.concurrent.Future
import scala.concurrent.{ ExecutionContext, Promise }
import ExecutionContext.Implicits.global
class my_controler {
}
object Main extends App {
val system = ActorSystem("HelloSystem")
val myobj = system.actorOf(Props(new MyWriter), name = "myobj")
implicit val timeout = Timeout(50 seconds)
val future2 = Future { myobj ! save("lots of conentet") }
val future1 = Future { myobj ! save("event more lots of conentet") }
}
MyWriter 代码:
case class save(startval: String)
class MyWriter extends Actor {
def receive = {
case save(startval) => save_to_file(startval)
}
任何想法为什么代码不能同时执行?
【问题讨论】:
-
save是如何定义的? -
好的,让我编辑我的问题以添加它
-
请记住,硬盘不喜欢并行访问。他们放慢了速度——很多。因此,如果它们在同一个高清上,请不要并行写入文件。同样正如其他人已经提到的那样,将来不要与演员进行交流。
标签: multithreading scala akka actor future