我有这段代码
require 'thread'
work_q = Queue.new
(0..50).to_a.each{|x| work_q.push x }
workers = (0...4).map do
Thread.new do
begin
while x = work_q.pop(true)
50.times{print [128000+x].pack "U*"}
end
rescue ThreadError
end
end
end
workers.map(&:join)
我知道如果我使用MRI运行,它只能运行得很清楚。
但是,如果我在jRuby上运行它,它会以简洁和平行的方式运行,或者只是简单地运行
是否必须在jRuby上使用java编写线程代码才能实现并行处理?
答案 0 :(得分:1)
简而言之,是的,它将是平行的。 jruby附带了用本机java编写的自定义线程库,所以当你将require 'thread'
放在文件的顶部时,你实际上使用的是java库,而不是ruby库。
只要您的java安装支持并行线程(以及大多数现代线程),并且只要您的操作系统支持并行线程(大多数现代线程),那么您的jruby代码也有可能并行运行