12

join方法有什么作用?
如:

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

即使没有该join语句,此代码也可以正常工作。

4

1 回答 1

27

与在 Java 中所做的相同 - 它导致调用 join的线程阻塞,直到被调用的Thread对象所代表的线程join终止。

println如果在生成新线程后让主线程执行其他操作(例如 a ),您可以看到不同之处。

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

如果没有join这个 println 可能会在另一个线程仍在运行时发生,所以你会得到old thread,两秒钟后跟着new thread. 主join线程必须等到另一个线程完成,所以你会在两秒钟内什么也得不到,然后new thread,然后old thread

于 2013-01-17T00:07:47.353 回答