Ruby 线程类 公共类方法

Ruby 线程类 公共类方法

在Ruby中,线程被用来实现并发的编程模块。需要多个线程的程序,使用 Thread类来 创建线程。线程类包含了大量的方法来执行一些特定的任务。

公共类方法

  1. abort_on_exception : 该方法返回全局 “异常时中止 “条件的状态。这个方法的默认值是false。如果这个方法的值被设置为 “true”,那么它将中止所有引发异常的线程。
Thread.abort_on_exception -> true or false
  1. abort_on_exception= : 该方法返回新的状态。当这个方法的值被设置为 “真 “时,就会中止产生异常的线程。这个方法的返回类型是布尔值。
Thread.abort_on_exception= bool -> true or false
# Ruby program to illustrate 
# abort_on_exception Method
  
Thread.abort_on_exception = true
  
x = Thread.new do
  
puts "Welcome to new thread"
raise "Exception is raised in thread"
end
  
sleep(0.5)
puts "Not Found"

输出:

Welcome to new thread
test.rb:9: Exception is raised in thread (RuntimeError)
        from test.rb:6:in `initialize'
        from test.rb:6:in `new'
        from test.rb:6
  1. critical : 该方法返回全局 “线程临界 “条件。
Thread.critical -> true or false
  1. critical= : 这个方法用来设置全局 “线程临界 “的状态,并将其返回。当这个方法的值被设置为 “true “时,那么它就禁止调度任何现有的线程,并且它不会阻止新线程的创建和运行。一些线程操作,如杀死或停止一个线程,在当前线程中睡觉,或引发一个异常,可能会导致一个线程调度在临界区。这个方法主要支持编写线程库的朋友。这个方法的返回类型是布尔值。
Thread.critical= bool -> true or false
  1. current : 该方法返回线程的当前执行情况。
Thread.current -> thread
  1. exit : 该方法用于终止当前运行的线程,并安排另一个线程运行。如果这个线程被标记为被杀死,那么它将返回该线程,如果这是主线程或最后一个线程,那么它将退出该进程。
Thread.exit
  1. fork : 这种方法与启动方法类似。
Thread.fork{block} -> thread
  1. kill : 该方法用于退出线程。
Thread.kill(thread)

示例:

# Ruby program to illustrate 
# kill Method
  
counter = 0
  
# creating new thread
x = Thread.new { loop { counter += 1 } }
  
# using sleep method
sleep(0.4)           
  
# exits the thread using kill method
Thread.kill(x)    
  
# give it time to die!
sleep(0.5)
  
# return false
x.alive?       

输出:

false
  1. list: 该方法返回所有可运行或已停止的线程对象的一个数组。
Thread.list -> array

示例:

# Ruby program to illustrate 
# list Method
  
# first thread
Thread.new { sleep(100) }
  
# second thread
Thread.new { 10000.times {|z| z*z } }
  
# third thread
Thread.new { Thread.stop }
  
# using list method
Thread.list.each {|thr| p thr }

输出:

#<Thread:0x8795838 sleep>
#<Thread:0x87958e0 run>
#<Thread:0x8795958 sleep>
#<Thread:0x87a4f10 run>
  1. main : 该方法返回进程的主线程。该程序每次运行都会返回不同的ID。
Thread.main -> thread
# Ruby program to print the id 
# of main thread
   
# using the main method
puts Thread.main      

输出:

#<Thread:0xbf04f18>
  1. new : 该方法用于创建和运行一个新的线程来执行块中给出的指令。任何传递给该方法的参数都会在块中传递。
Thread.new([arguments]*){|arguments|block} -> thread
  1. pass : 这种方法试图将执行传递给另一个线程,但执行的切换取决于操作系统。
Thread.pass
  1. start : 这个方法与new方法类似。如果线程类被子类化,那么从子类中调用start将不会调用子类的初始化方法。
Thread.start([arguments]*){|arguments|block} -> thread
  1. stop : 该方法用于停止当前运行的线程的执行,使其进入睡眠状态,并安排另一个线程的执行,将关键条件重置为假。
Thread.stop

示例:

# Ruby program to illustrate 
# stop Method
  
x = Thread.new { print "geeks"; Thread.stop; print "geeksforgeeks" }
  
# using pass method
Thread.pass
  
print "geeksforgeeks"
  
x.run
x.join

输出:

geeksgeeksforgeeksgeeksforgeeks

Reference: https://ruby-doc.org/core-2.5.0/Thread.html#class

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程