我想使用Akka框架并发地写入多个文件,首先我创建了一个名为MyWriter的类写入文件,然后使用期货我称这个对象两次跳转2文件将为我创建,但是当我监视程序的执行时,它首先填充第一个文件,然后填充第二个文件(阻塞/同步)。如何使用期货与Akka的异步结果
问:我怎样才能使代码波纹管运行(无粘连/异步)
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'? –
好吧,让我编辑我的问题,添加 – CruncherBigData
请记住,硬盘不喜欢并行访问。他们放慢速度 - 很多。所以如果它们在同一个hd上,不要并行地写文件。还有其他人已经提到过,不要在未来包装与演员的沟通。 – SpiderPig