我有多个来源,我从哪里导入文章列表。以下是实施。但是,改进可能是同时为相同的源运行线程。
class Importer
def init
t1 = Thread.new(get_Articles('url1',
'RSS',
nil))
t2 = Thread.new(get_Articles('url2',
'RSS',
nil)
t1.join
t2.join
end
def get_Articles(source_url, source_type, source_key)
articles = Article.new
if source_type == 'RSS' then
...
elsif source_type == 'JSON' then
...
end
end
我已经实现了线程排序。但我不确定我是否正在按照Ruby的方式进行。有人可以就此提出建议吗?在上面运行时,我会在must be called with a block
Thread.new(get_Articles('url1',
答案 0 :(得分:4)
如果我们查看documentation for Thread,我们会看到应该使用块调用Thread.new
。也就是说,使用花括号而不是圆括号:
t1 = Thread.new { get_Articles('url1', 'RSS', nil) }
t2 = Thread.new { get_Articles('url2', 'RSS', nil) }
您的原始代码甚至在调用get_Articles
之前运行Thread.new
,尝试传递返回值,这不是块。