【发布时间】:2018-04-05 19:12:40
【问题描述】:
我想在一个名为 extraire_phrases 的 Future 方法上启动两个工作人员。我在我的 main 中调用它们,但似乎 Promise 从未实现,并且在我的 main 结束时我没有得到任何东西,就好像工人没有开始一样。有任何想法吗?非常感谢。
object Main {
val chemin_corpus:String = "src/corpus.txt"
val chemin_corpus_backup:String = "src/tartarinalpes.txt"
val chemin_dictionnaire:String = "src/dicorimes.dmp"
val chemin_dictionnaire_backup:String = "src/dicorimes2.dmp"
def main(args:Array[String]){
val quatrain = Promise[List[Phrase]]()
var grosPoeme = List[Phrase]()
Future {
val texte_1 = Phrases.extraire_phrases(chemin_corpus, chemin_dictionnaire)
val texte_2 = Phrases.extraire_phrases(chemin_corpus_backup, chemin_dictionnaire_backup)
texte_1.onComplete {
case Success(list) => {
val poeme = new DeuxVers(list)
poeme.ecrire :: grosPoeme
}
case Failure(ex) => {
quatrain.failure(LameExcuse("Error: " + ex.getMessage))
}
}
texte_2.onComplete {
case Success(lst) => {
val poeme2 = new DeuxVers(lst)
poeme2.ecrire :: grosPoeme
}
case Failure(ex) => {
quatrain.failure(LameExcuse("Error: " + ex.getMessage))
}
}
quatrain.success(grosPoeme)
}
println(quatrain.future)
println(grosPoeme)
}
}
这是执行后我的控制台中的内容:
Future(<not completed>)
List()
即使我在val texte_1 之前删除了Future {,似乎它们都没有正常触发,texte_1 以某种方式启动,有时它工作,有时不工作,并且 texte_2 永远不会启动(永远不会完成)。也没有失败。
// 编辑:Alvaro Carrasco 的答案是正确的。不过谢谢你们俩的帮助
【问题讨论】:
-
请使用答案旁边的复选标记将我的答案标记为您选择的答案(如果您确实认为是的话)。谢谢。
标签: scala concurrency