Équivalent de Go Channel en Java
Question :
J'ai besoin de lire efficacement les données à partir de plusieurs files d'attente de blocage sans créer de threads de lecture séparés. Existe-t-il un mécanisme équivalent au select/epoll de Go en Java ?
Réponse :
Envisagez d'utiliser la bibliothèque JCSP, qui fournit la classe Alternative. Alternative est comparable à l'instruction select de Go. Il vous permet de créer un seul fil consommateur capable de multiplexer les données de plusieurs canaux sources sans avoir besoin d'une interrogation constante.
Avantages de l'alternative JCSP :
Exemple d'utilisation :
Le code Java suivant démontre un multiplexeur équitable utilisant JCSP :
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 ()); } } }
Remarque supplémentaire :
La version actuelle de JCSP dans les référentiels Maven est la 1.1-rc5, contrairement à ce qui est indiqué sur le site Web de JCSP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!