如果我創建一個類變量,像這樣:類變量和初始化時間
class Song
@@plays = 0
class << self
def plays=(plays)
@@plays += plays
end
def plays
@@plays
end
end
end
的我有多個線程訪問這個類的方法和JRuby中設置它:
t1 = Thread.new {st1 = Song.plays = 1}
t2 = Thread.new {st2 = Song.plays = 5}
t3 = Thread.new {st3 = Song.plays = 3}
是否有可能有2個線程同時初始化@@播放到0?在執行的哪個階段是創建類變量?
您的代碼不適合工作我。沒有'Song#plays =',而是在'Song'的singleton類中創建這個方法作爲類方法。 – Stefan 2014-10-09 11:23:34
修正了它,我習慣性地添加了新的。 – 2014-10-09 11:33:24
不,仍然不起作用。 'Song.singleton_class.plays ='可以工作,但這可能不是你想要的。 – Stefan 2014-10-09 11:35:05