Перейти к содержанию
Авторизация  
Anon

Synchronized В Сборках

Рекомендуемые сообщения

Здравствуйте. Было замечено, что у некоторых методах, например в L2ItemInstance, метод updateDatabase синхронизирован.

Вопрос1: целесообразно использовать synchronized в методах, которые считывают/записывают данные в MySQL базу?

Вопрос2: в каких ещё случаях в сборках может потребоваться использовать synchronized?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Без неё никуда, например линейно обрабатывать дроп: сначала отправлять пакеты, а потом загружать в бд, согласись как то не очень звучит.

Конечно есть и свои минусы, синхронизация требует дополнительных ресурсов.

Изменено пользователем dislike

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько мне известно, пакеты отправляются в отдельном потоке, когда обновление базы происходит в том же самом. Учитывая что JVM необходимо некоторое время на создание потока, его запуск и исполнение инструкций, то как ни крути запись в БД произойдет раньше, да и к тому же что отправка пакета, что запись в БД, будет требовать от класса только "get" методы. Т.е. информация, что в пакете уйдет клиенту, что будет записываться в БД одинаковая.

 

Но есть интересный вопрос в таком случае. Каким обзаром синхронизация метода updateDatabase в классе L2ItemInstance спасет от того, что если один поток вошел в синхронизированный метод updateDatabase, а другой параллельный поток в этот момент взял и воспользовался например методом setCount, тем самым изменив значения количества предмета. Получается, что в таком случае в БД может записаться одно значение, а вот уже пакетом информация к клиенту уйдет с другим значением.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...