Java RMI: поддержка параллелизма - PullRequest
0 голосов
/ 15 июня 2011

Я занимаюсь разработкой многопользовательской карточной игры с архитектурой P2P, это не мое решение, проект был заказан профессором курса распределенной системы в моем университете.

Еще одно ограничение, налагаемое профессором, заключается в использовании технологии Java RMI для реализации коммуникационного уровня между игроками.

я бы знал, если Java RMI управляет параллелизмом "из коробки", другими словами, я бы знал, если когда я вызываю метод для удаленного объекта, объект автоматически "блокируется" и никакие объекты не могут одновременно вызывать один и тот же способ.

Может ли объявление методов синхронизироваться быть хорошим решением?

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Вызов метода для удаленного объекта не блокирует объект.

Объявление метода для синхронизации является одним из способов управления доступом. Однако просто объявлять все ваши методы на всех удаленно доступных объектах для синхронизации плохой идеей. Действительно, в зависимости от деталей того, что вы делаете, это может создать ненужные узкие места параллелизма и / или риск взаимоблокировок . Вам нужно более тщательно подумать о поведении объектов и взаимодействиях.

1 голос
/ 15 июня 2011

Синхронизация вашего метода - хорошее начало. За это стоит снижение производительности, но в вашем случае это прекрасно.

Взгляните на этот Java RMI и синхронизированные методы

...