Äquivalent zum Go-Kanal in Java: Quelldaten multiplexen
Um die Situation zu bewältigen, in der mehrere BlockingQueues überwacht werden müssen, ohne jedoch mehrere Leser-Threads zu erstellen, Ein Mechanismus, der dem Kanal und der Auswahl von Go ähnelt, ist wertvoll. In Java bietet die JCSP-Bibliothek ein funktionales Äquivalent.
JCSP-Alternative: Ein Go-Select-Gegenstück
Die JCSP-Alternative entspricht der Select-Anweisung von Go. Es ermöglicht einem konsumierenden Thread, mehrere Eingabekanäle einzuschalten, ohne diese abfragen zu müssen. Dadurch wird ein effizientes Multiplexen der Quelldaten gewährleistet und unnötige Schleifen vermieden, selbst wenn einige Warteschlangen keine Daten enthalten.
JCSP-Implementierung
Ein Beispiel für die Verwendung der JCSP-Alternative für faires Multiplexen von Eingaben Kanäle werden unten bereitgestellt:
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 ()); } } }
Deadlock-Vermeidung
Ähnlich wie Go müssen Java-Programme, die Kanäle verwenden, sorgfältig entworfen werden, um Deadlocks zu vermeiden. Die formale Analyse der JCSP-Bibliothek validiert ihren Kanal und ihre alternative Implementierung und gewährleistet Zuverlässigkeit und Freiheit von Deadlocks.
Hinweis
Die neueste stabile Version von JCSP ist Version 1.1-rc5. nicht die auf der Website erwähnte Version.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3