Синхронизированные методы в MultiThreadedApplicationAdapter - PullRequest
0 голосов
/ 24 августа 2011

Я использую red5 для mmo, и у меня проблемы с синхронизированными методами, методами, которые я использовал в MultiThreadedApplicationAdapter, всегда блокирующим следующий запрос.Это нормально?Потому что я выполняю некоторые операции с базами данных в этих методах, и этот синхронизированный блок делает мою производительность очень плохой.Я решил использовать кварцевые рабочие места, чтобы преодолеть эту стукуцию, как бы ни было в этот раз кластеризованная топология, которая вводит меня в заблуждение.Не могли бы вы помочь мне, является ли распространенным решением использовать кварц для решения этой проблемы, есть ли какой-нибудь орган, чтобы дать мне более разумный совет Спасибо

Я хочу сделать дополнение, чтобы очистить мой вопрос

После расширения MultiThreadedApplicationAdapter и создания моего переопределенного класса я реализовал функцию

public  boolean connect(IConnection conn, IScope scope, Object[] params) {

, и в этой функции я хочу установить статус пользователя Online (как вы можете видеть, в этой функции нет синхронизированного литерала, однако ондействует так, как есть.) И я хочу взять пользовательскую сущность из базы данных, а затем установить сетевой статус и затем сохранить ее обратно. В этой части, даже если я не использую синхронизированный литерал, следующий приходящий клиент ожидает предыдущее завершение.Я чувствую, что должен создать другую работу с Quartz и выполнить операции с базой данных в этом потоке, однако я не уверен, что это снизит мою производительность.Есть ли другой способ предотвратить этот блок, это, кажется, ограничение Red5 ??Об этом также упоминается в блоге http://ria101.wordpress.com/2010/03/09/red5-cabin-fever-advanced-scope-and-room-management/

1 Ответ

0 голосов
/ 24 августа 2011

Только один поток может вызвать синхронизированный метод объекта, кварц не изменит его.И из твоего поста не видно, чего ты хочешь добиться.

...