array = ["1","2"]
array.each do |arrayobj|
Thread.new {
puts "#{arrayobj}"
}
Thread.join
end
您好!我可能正在做一些非常错误的事情,但我似乎无法弄明白。谢谢你。
答案 0 :(得分:2)
join
是Thread
的实例上的方法,而不是Thread
类本身。
您需要创建一个线程集合,然后在每个线程上调用join
。
array.map do |i|
Thread.new { puts i }
end.map(&:join)
第一个map
会将输入array
映射到一个线程数组,第二个map
将在每个线程上调用join
,其扩展形式是.map { |thread| thread.join }
。
请参阅https://ruby-doc.org/core-2.2.0/Thread.html
这是另一个更好地说明它有效的例子:
array = (1..100).to_a
array.map { |i| Thread.new { sleep(rand); puts i } }.map(&:join)
# => 97
31
75
36
50
53
17
81
49
35
83
11
13
24
29
7
.. etc.