studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java multithreading

java - para - manual de programacion android pdf



La mejor práctica para Java IPC (5)

¿cuál es el mejor método para la comunicación entre procesos en una aplicación Java multiproceso?

Debe ser un rendimiento (por lo que no JMS por favor) fácil de implementar y confiable, de modo que los objetos y los datos se puedan vincular a un solo subproceso.

Cualquier idea bienvenida!


¿Podrías aclarar un poco? ¿Te refieres a IPC en una sola JVM? (Varios hilos, sí, pero a nivel de sistema operativo solo un proceso). ¿O te refieres a varias JVM? (Y verdaderamente comunicaciones entre procesos a nivel de sistema operativo).

Si es el primero, tal vez algo fuera de java.util.concurrent , como ConcurrentLinkedQueue haría el truco. (Paso el mensaje entre mis hilos con clases de java.util.concurrent con éxito).

Si es el último, entonces solo voy a adivinar y sugerir que eche un vistazo a RMI , aunque no creo que califique como totalmente confiable, tendría que manejar eso un poco más como ''manos a la obra''.


Asumiendo el escenario 1 JVM, múltiples hilos, de hecho, java.util.concurrent es el lugar para buscar, específicamente las diversas implementaciones de Queue. Sin embargo, una abstracción además de eso puede ser agradable y allí Jetlang se ve muy interesante y liviano al pasar mensajes de Java.


Recomiendo examinar todo el paquete java.util.concurrent , que tiene múltiples clases para manejar la concurrencia y diferentes medios de comunicación entre hilos. Todo depende de lo que quieras lograr, ya que tu pregunta es bastante general.


Debería usar una cola de productor / consumidor. Al hacer eso evitas las trampas de la programación multiproceso: condiciones de carrera y puntos muertos. Además, no es solo más fácil y más limpio, sino también mucho más rápido si utiliza una cola libre de bloqueo como Disruptor o MentaQueue. Escribí un artículo de blog donde hablo sobre esto en detalle y le enseño cómo obtener latencias de <100 nanosegundos: comunicación entre hilos con latencia de nanosegundos de dos dígitos .


Acabo de agregar MappedBus en github ( http://github.com/caplogic/mappedbus ) que es una biblioteca de IPC eficiente que permite que varios procesos Java / JVM se comuniquen intercambiando mensajes y utiliza un archivo mapeado de memoria para el transporte. El rendimiento se ha medido a 40 millones de mensajes / s.