红宝石线程。为什么“#加入”?

Jin*_*Lim 1 ruby multithreading

这听起来可能很愚蠢。但请指导我。

https://apidock.com/ruby/Thread/join

a = Thread.new { print "a"; }
a.join(5)
Run Code Online (Sandbox Code Playgroud)

正如我们在这里看到的,#join方法基本上是“嘿操作系统,从现在起 5 秒后运行此代码块(线程)”。

但这个名字从何而来?join。为什么不只是run
在Java中,它的含义似乎略有不同。

编辑

我发现这实际上#join是阻塞呼叫。这意味着5秒后检查线程是否完成。如果finished则终止该线程。(X) 。join 将返回 Thread 对象。这已经死了。

hob*_*bbs 7

不完全的。join是等待线程完成的操作的传统名称。当您启动线程时,执行会“拆分”,而当父级意识到线程完成时,执行会“合并”。

a.join(5)没有说“从现在起 5 秒后运行此线程”,而是说“最多等待 5 秒让此线程完成”。一旦您创建它,它就会开始运行。