12

メソッドは何をしjoinますか?
のように:

def thread = Thread.start { println "new thread" }
thread.join()

このコードは、joinステートメントがなくても正常に機能します。

4

1 に答える 1

27

Javaの場合と同じように、呼び出されたオブジェクトによって表されるスレッドが終了するまで、呼び出さ れたスレッドがブロックされます。joinThreadjoin

println新しいスレッドを生成した後にメインスレッドに何か他のこと(たとえば)を実行させると、違いがわかります。

def thread = Thread.start {
  sleep(2000)
  println "new thread"
}
//thread.join()
println "old thread"

このprintlnがないjoinと、他のスレッドがまだ実行されている間に発生する可能性があるためold thread、2秒後に。が続きますnew thread。メインスレッドではjoin、他のスレッドが終了するまで待機する必要があるため、2秒間何も取得されないため、次にnew threadold thread

于 2013-01-17T00:07:47.353 に答える