module ThreadSafe

def self.allocate

def self.allocate
  obj = super
  obj.send(:_mon_initialize)
  obj
end

def _mon_initialize

def _mon_initialize
  @_monitor = Monitor.new unless @_monitor # avoid double initialisation
end