Pregunta

Estoy desarrollando un juego de cartas multijugador con una arquitectura P2P, no es mi decisión, el proyecto ha sido encargado por el profesor de curso de sistemas distribuidos en mi universidad.

Otra restricción impuesta por el profesor es utilizar la tecnología Java RMI para implementar la capa de comunicación entre los jugadores.

Sabría si Java RMI administra la concurrencia "fuera de la caja", en otras palabras, sabría si cuando invoco un método en un objeto remoto, el objeto se "bloquea" automáticamente y ningún objeto puede invocar simultáneamente el mismo método.

¿Podría declarar los métodos como sincronizados ser una buena solución?

Gracias

¿Fue útil?

Solución

Llamar a un método en un objeto remoto no bloquea el objeto.

Declarar un método para sincronizar es una forma de controlar el acceso. Sin embargo, simplemente declarar todos sus métodos en todos sus objetos remotos accesibles para sincronizar es una mala idea. De hecho, dependiendo de los detalles de lo que está haciendo, podría crear cuellos de botella de concurrencia innecesarios y/o el riesgo de fallas. Debe pensar con más cuidado sobre el comportamiento de los objetos y las interacciones.

Otros consejos

Sincronizar tu método es un buen comienzo. Hay una penalización de rendimiento por hacer esto, pero en su caso esto está perfectamente bien.

Mira esto Java RMI y métodos sincronizados

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top