以下のコードでは、20個のスレッドを作成し、それぞれにメッセージを出力し、スリープして別のメッセージを表示させます。私は私のメインスレッドでスレッドを開始し、同様にすべてのスレッドに参加します。私はすべてのスレッドが終了した後にのみ "all done"メッセージが出力されることを期待します。しかし、すべてのスレッドが完了する前に、「すべて完了」が印刷されます。誰かが私にこの行動を理解するのを助けることができますか?スケーラで期待通りにスレッドが動作しない
ありがとうございました。 ケント
ここでは、コードは次のとおりです。ここで
def ttest() = {
val threads =
for (i <- 1 to 5)
yield new Thread() {
override def run() {
println("going to sleep")
Thread.sleep(1000)
println("awake now")
}
}
threads.foreach(t => t.start())
threads.foreach(t => t.join())
println("all done")
}
が出力されます:あなたのコードで
going to sleep
all done
going to sleep
going to sleep
going to sleep
going to sleep
awake now
awake now
awake now
awake now
awake now
for-comprehensions、ranges、threadの特定のやりとりが共通のエラーパターンであるように思われるので、私はこの疑問を浮き彫りにしています。ありがとう、パヴェ。 –