Equivalente de Go Channel en Java: multiplexación de datos de origen
Para manejar la situación en la que múltiples BlockingQueues requieren monitoreo pero sin crear múltiples hilos de lectura, un mecanismo similar al canal Go y seleccionar es valioso. En Java, la biblioteca JCSP ofrece un equivalente funcional.
Alternativa JCSP: una contraparte de Go Select
La alternativa JCSP es equivalente a la declaración select de Go. Permite que un hilo consumidor active múltiples canales de entrada sin tener que sondearlos. Esto garantiza una multiplexación eficiente de los datos de origen, evitando bucles innecesarios incluso cuando algunas colas no tienen datos.
Implementación de JCSP
Un ejemplo del uso de la alternativa de JCSP para una multiplexación justa de la entrada Los canales se proporcionan a continuación:
import org.jcsp.lang.*; public class FairPlex implements CSProcess { private final AltingChannelInput[] in; private final ChannelOutput out; public FairPlex (final AltingChannelInput[] in, final ChannelOutput out) { this.in = in; this.out = out; } public void run () { final Alternative alt = new Alternative (in); while (true) { final int index = alt.fairSelect (); out.write (in[index].read ()); } } }
Evitar interbloqueos
Al igual que Go, los programas Java que utilizan canales deben diseñarse cuidadosamente para evitar interbloqueos. El análisis formal de la biblioteca JCSP valida su canal y su implementación alternativa, lo que garantiza confiabilidad y ausencia de interbloqueos.
Nota
La última versión estable de JCSP es la versión 1.1-rc5. no es la versión mencionada en el sitio web.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3