"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो के चैनल और चयन के समान, जावा एकाधिक ब्लॉकिंग कतारों से डेटा को कुशलतापूर्वक मल्टीप्लेक्स कैसे कर सकता है?

गो के चैनल और चयन के समान, जावा एकाधिक ब्लॉकिंग कतारों से डेटा को कुशलतापूर्वक मल्टीप्लेक्स कैसे कर सकता है?

2024-12-23 को प्रकाशित
ब्राउज़ करें:975

How Can Java Efficiently Multiplex Data from Multiple Blocking Queues, Similar to Go's Channels and Select?

जावा में गो चैनल के समतुल्य: मल्टीप्लेक्सिंग सोर्स डेटा

उस स्थिति को संभालने के लिए जहां एकाधिक ब्लॉकिंग क्यू की निगरानी की आवश्यकता होती है लेकिन कई रीडर थ्रेड बनाए बिना, गो के चैनल और चयन के समान एक तंत्र मूल्यवान है। जावा में, जेसीएसपी लाइब्रेरी एक कार्यात्मक समकक्ष प्रदान करती है। यह उपभोग करने वाले थ्रेड को कई इनपुट चैनलों पर मतदान किए बिना स्विच करने की अनुमति देता है। यह स्रोत डेटा की कुशल मल्टीप्लेक्सिंग सुनिश्चित करता है, कुछ कतारों में कोई डेटा न होने पर भी अनावश्यक लूप से बचा जाता है। चैनल नीचे दिए गए हैं:

import org.jcsp.lang.*; पब्लिक क्लास फेयरप्लेक्स सीएसप्रोसेस को लागू करता है { निजी अंतिम AltingChannelInput[] में; निजी अंतिम चैनल आउटपुट आउटपुट; सार्वजनिक फ़ेयरप्लेक्स (अंतिम AltingChannelInput[] में, अंतिम चैनलआउटपुट आउट) { this.in = in; यह.बाहर = बाहर; } सार्वजनिक शून्य रन () { अंतिम वैकल्पिक वैकल्पिक = नया वैकल्पिक (इंच); जबकि (सत्य) { अंतिम पूर्णांक सूचकांक = alt.fairSelect (); out.write (in[index].read ()); } } }

गतिरोध से बचाव

गो के समान, चैनलों का उपयोग करने वाले जावा कार्यक्रमों को गतिरोध से बचने के लिए सावधानीपूर्वक डिजाइन किया जाना चाहिए। जेसीएसपी लाइब्रेरी का औपचारिक विश्लेषण इसके चैनल और वैकल्पिक कार्यान्वयन को मान्य करता है, जिससे विश्वसनीयता और गतिरोध से मुक्ति सुनिश्चित होती है।

नोट

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 ());
     }
   }
 }
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3