Équivalent du canal Go en Java : multiplexage des données sources
Pour gérer la situation dans laquelle plusieurs BlockingQueues nécessitent une surveillance mais sans créer plusieurs threads de lecture, un mécanisme similaire au canal et à la sélection de Go est précieux. En Java, la bibliothèque JCSP offre un équivalent fonctionnel.
Alternative JCSP : une contrepartie Go Select
L'alternative JCSP est équivalente à l'instruction select de Go. Il permet à un thread consommateur d'activer plusieurs canaux d'entrée sans avoir à les interroger. Cela garantit un multiplexage efficace des données sources, évitant les boucles inutiles même lorsque certaines files d'attente ne contiennent aucune donnée.
Mise en œuvre de JCSP
Un exemple d'utilisation de l'alternative de JCSP pour un multiplexage équitable des entrées les chaînes sont fournies ci-dessous :
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 ()); } } }
Évitement des interblocages
Semblable à Go, les programmes Java utilisant des canaux doivent être soigneusement conçus pour éviter les interblocages. L'analyse formelle de la bibliothèque JCSP valide son canal et sa mise en œuvre alternative, garantissant la fiabilité et l'absence de blocages.
Remarque
La dernière version stable de JCSP est la version 1.1-rc5, pas la version mentionnée sur le site Web.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3