scala – 为什么Future.sequence并行执行我的期货而不是串行?
发布时间:2020-12-16 09:17:11 所属栏目:安全 来源:网络整理
导读:“序列”一词是指一连串的动作. object Test { def main(args: Array[String]) { def producer() = { val list = Seq( future { println("startFirst"); Thread.sleep(3000); println("stopFirst") },future { println("startSecond"); Thread.sleep(1000);
“序列”一词是指一连串的动作.
object Test { def main(args: Array[String]) { def producer() = { val list = Seq( future { println("startFirst"); Thread.sleep(3000); println("stopFirst") },future { println("startSecond"); Thread.sleep(1000); println("stopSecond") } ) Future.sequence(list) } Await.result(producer,Duration.Inf) } } 所以我期望这个程序打印出来: startFirst 甚至: startSecond 但不是(发生): startFirst 为什么这个方法不叫Future.parallel()? 解决方法
期货同时运行,因为它们已经同时开始:).
要依次运行它们,您需要使用flatMap: Future { println("startFirst"); Thread.sleep(3000); println("stopFirst") }.flatMap{ _ => Future { println("startSecond"); Thread.sleep(1000); println("stopSecond") } } Future.sequence只是转过Seq [Future [T]] =>未来[Seq [T]]这意味着收集所有已经开始的期货的结果,并将来放弃. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- scala – 为什么我不能在代码块中递归地定义一个变量?
- angular – 当状态发生变化时未调用ngrx存储订阅
- angularjs – htaccess重定向的Angular路由
- Keys vs Values: what is swapped out?
- regex – Bash,grep在具有指定字符串的两行之间
- angularjs – Ionic – 禁用以编程方式在单个离子项上滑动
- 用h和l打开文件
- axis2开发webservice之会话(Session)管理
- twitter-bootstrap – 使用ember.js模板的Bootstrap Popove
- lisp – 如何以方便的方式在Unix类操作系统下运行SBCL代码?