Ruby面试题

当前位置: 面试问题网 > Ruby面试题 > Ruby如何创建一个线程

Ruby如何创建一个线程

可以使用Thread.new方法去创建一个线程,可以随后代码块中列出线程执行的代码:
   x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }
   a = Thread.new { print “a”; print “b”; sleep 0.2; print “c” }
  
   执行结果为:
   ab
  
   上面的示例程序中使用Thread.new创建了二个线程,线程随即开始运行。但是运行结果很奇怪,为什么程序运行结果是“ab”呢?我们预期的执行结果应该是 “abxyzc”。
   当Ruby程序执行完毕的时候,他会杀掉所有的线程,不管其它的线程的运行状态如何。如果没有使用join方法,那么主程序执行完毕后会把所有没有执行完毕的线程杀掉。
   上面的实例程序中,当主程序运行完毕时,两个线程都没有运行结束就被中止掉了。我们可以使用join方法来让主程序等待某个特定线程结束,对每一个线程使用join方法,可以确保在程序结束前所有的线程可以运行完毕。
  
   x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }
   a = Thread.new { print “a”; print “b”; sleep 0.2; print “c” }
   x.join
   a.join
  
   我们使用Thread.new方法创建两个新的线程并开始运行, 然后使用join方法等待线程结束。执行结果为:
   abxyzc
   可以看到通过使用join方法等待线程结束,程序运行结果和我们预期结果相符。
  
   另一个例子:
   x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }
   a = Thread.new { sleep 0.1; print “a”; print “b”; sleep 0.2; print “c” }
   执行没有任何输出,因为主程序执行完毕杀死两个线程的时候这两个线程没有运行到输出语句。
  
   也可以给join方法添加时间用来指明最大等待时间。如果超时join返回nil。
   x = Thread.new { sleep 0.1; print “x”; print “y”; print “z” }
   a = Thread.new { sleep 0.1; print “a”; print “b”; sleep 10; print “c” }
   x.join(5)
   a.join(5)
   执行结果为:
   abxyz
   上面的例子中对于每一个线程的最大等待时间是5秒,由于a线程需要执行10秒以上,所以a线程没有运行完毕程序就将返回。

【Ruby如何创建一个线程】相关文章

1. Ruby如何创建一个线程

2. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

3. 使用C#编写创建一个线程的代码

4. ruby如何进行集成操作?Ruby能进行多重继承吗?

5. Java里面如何创建一个内部类的实例

6. Spring如何创建一个数据连接池

7. Ruby如何定义一个类

8. 启动一个线程是用run()还是start()

9. 既然说Ruby中一切都是对象,那么Ruby中类也是对象吗

10. Ruby如何进行文件操作

本文来源:https://www.mianshiwenti.com/a13488.html

点击展开全部

《Ruby如何创建一个线程》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝Ruby如何创建一个线程﹞相关内容

「Ruby如何创建一个线程」相关专题

其它栏目

也许您还喜欢