Equivalente ao canal Go em Java: multiplexação de dados de origem
Para lidar com a situação em que vários BlockingQueues requerem monitoramento, mas sem criar vários threads de leitor, um mecanismo semelhante ao canal e seleção de Go é valioso. Em Java, a biblioteca JCSP oferece um equivalente funcional.
Alternativa JCSP: uma contraparte Go Select
A alternativa JCSP é equivalente à instrução select de Go. Ele permite que um thread consumidor ative vários canais de entrada sem precisar consultá-los. Isso garante multiplexação eficiente dos dados de origem, evitando loops desnecessários mesmo quando algumas filas não possuem dados.
Implementação JCSP
Um exemplo de uso da alternativa JCSP para multiplexação justa de entrada canais é fornecido abaixo:
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 impasses
Semelhante ao Go, os programas Java que usam canais devem ser cuidadosamente projetados para evitar impasses. A análise formal da biblioteca JCSP valida seu canal e implementação alternativa, garantindo confiabilidade e ausência de impasses.
Nota
A versão estável mais recente do JCSP é a versão 1.1-rc5, não a versão mencionada no site.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3