Setara dengan Go Channel dalam Java: Data Sumber Berganda
Untuk mengendalikan situasi di mana berbilang BlockingQueues memerlukan pemantauan tetapi tanpa membuat berbilang urutan pembaca, mekanisme yang serupa dengan saluran dan pilih Go adalah berharga. Di Java, pustaka JCSP menawarkan fungsi yang setara.
JCSP Alternatif: A Go Select Counterpart
Alternatif JCSP adalah bersamaan dengan pernyataan pilih Go. Ia membenarkan benang yang memakan untuk menghidupkan berbilang saluran input tanpa perlu meninjaunya. Ini memastikan pemultipleksan data sumber yang cekap, mengelakkan gelung yang tidak perlu walaupun beberapa baris gilir tidak mempunyai data.
Pelaksanaan JCSP
Contoh penggunaan Alternatif JCSP untuk pemultipleksan input yang adil saluran disediakan di bawah:
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 ()); } } }
Kebuntuan Pengelakan
Serupa dengan Go, program Java yang menggunakan saluran mesti direka bentuk dengan teliti untuk mengelakkan kebuntuan. Analisis formal perpustakaan JCSP mengesahkan saluran dan pelaksanaan Alternatifnya, memastikan kebolehpercayaan dan kebebasan daripada kebuntuan.
Nota
Keluaran stabil terkini JCSP ialah versi 1.1-rc5, bukan versi yang disebut di tapak web.
Atas ialah kandungan terperinci Bagaimanakah Java Boleh Berbilang Data Secara Cekap daripada Barisan Berbilang Penyekatan, Serupa dengan Saluran dan Pilih Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!