我目前正在使用一個程序,該線程利用線程中的回調來操作靜態類的類變量。當任何操縱對象的方法被稱爲線程死亡。如果任何人都可以看看並告訴我我做錯了什麼,或者我怎麼能夠以更好的方式完成同樣的事情,那將非常感激。下面是一個複製問題的簡單程序。操作數據時Ruby線程死亡
在phone.rb:
class Phone
@@ringer = "RingVibrateRingVibrateRing"
def self.get_ringer
return @@ringer
end
def set_ringer(new_ring)
@@ringer = new_ring
end
def self.calling_you(reached)
puts "Calling you. "
t = Thread.new {
sleep(3)
reached.call
Thread.exit
}
sleep(10)
puts "Thanks for calling me back!"
end
end
在CallTree.rb
require 'thread'
require 'C:\Users\mabauer\Desktop\phone.rb'
def calling_you_back
ring_sound = Phone.get_ringer
puts "#{ring_sound}"
# The following line is where issues occur, when commented it works fine
Phone.set_ringer("RingingRingingRinging")
ring_sound = Phone.get_ringer
puts "#{ring_sound}"
puts "I called you back."
end
begin
Phone.calling_you(method(:calling_you_back))
end