Я работаю над приложением Sinatra-JRuby и обрабатываю ситуацию, когда параллельные вызовы API поступают на уровень API, а затем обрабатываются с помощью уровня сервиса и адаптера. У меня есть модуль GlobalService для обмена общей информацией, поэтому я могу получить доступ к этой общей информации из любого другого уровня. Это работает отлично, пока не появятся совпадающие вызовы и сбросьте значение предыдущего API. Хотя я применил Mutex для решения этой проблемы, но у меня есть ощущение, что это неправильный подход к проблеме. Вот что я реализовал:Параллелизм в JRuby
require 'thread'
module GlobalService
@@mutex = Mutex.new
def self.set_header(auth_subject, transaction_id)
@@mutex.synchronize {
@auth_subject = auth_subject
@transaction_id = transaction_id
}
end
def self.get_header
@@mutex.synchronize {
return @auth_subject, @transaction_id
}
end
end
Сообщите мне о любом альтернативном решении проблемы.