Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

फिक्स्ड थ्रेड पूल और कैश्ड थ्रेड पूल के बीच अंतर।

एक्ज़ीक्यूटर फ्रेमवर्क को थ्रेड पूल अवधारणा का उपयोग करके डिज़ाइन किया गया है। थ्रेड पूल वर्तमान कार्य को निष्पादित करने के लिए हर बार एक नया थ्रेड बनाने के बजाय पहले से बनाए गए थ्रेड का पुन:उपयोग करने का तरीका है।

एक्ज़ीक्यूटर्स क्लास थ्रेड पूल बनाने के लिए फ़ैक्टरी विधि प्रदान करता है। थ्रेडपूल एक्ज़ीक्यूटर क्लास एक्ज़ीक्यूटर्स के लिए बेस इम्प्लीमेंटेशन है जो कई एक्ज़ीक्यूटर्स फ़ैक्टरी मेथड्स से लौटाया जाता है।

Sr. नहीं. कुंजी फिक्स्ड थ्रेड पूल कैश्ड थ्रेड पूल
1
मूलभूत
जावा दस्तावेज़ के अनुसार −
एक थ्रेड पूल बनाता है जो एक साझा अनबाउंड क्यू से संचालित होने वाले निश्चित संख्या में थ्रेड्स का पुन:उपयोग करता है। किसी भी समय, अधिकांश nThreads थ्रेड सक्रिय प्रसंस्करण कार्य होंगे। यदि सभी थ्रेड सक्रिय होने पर अतिरिक्त कार्य सबमिट किए जाते हैं, तो वे थ्रेड उपलब्ध होने तक कतार में प्रतीक्षा करेंगे। यदि शटडाउन से पहले निष्पादन के दौरान विफलता के कारण कोई भी धागा समाप्त हो जाता है, तो बाद के कार्यों को निष्पादित करने के लिए आवश्यक होने पर एक नया धागा इसकी जगह ले लेगा। पूल में धागे तब तक मौजूद रहेंगे जब तक कि यह स्पष्ट रूप से बंद न हो जाए।
जावा दस्तावेज़ के अनुसार −
एक थ्रेड पूल बनाता है जो आवश्यकतानुसार नए थ्रेड बनाता है, लेकिन उपलब्ध होने पर पहले से निर्मित थ्रेड्स का पुन:उपयोग करेगा। ये पूल आमतौर पर उन कार्यक्रमों के प्रदर्शन में सुधार करेंगे जो कई अल्पकालिक अतुल्यकालिक कार्यों को निष्पादित करते हैं। निष्पादित करने के लिए कॉल उपलब्ध होने पर पहले से निर्मित धागे का पुन:उपयोग करेंगे। यदि कोई मौजूदा थ्रेड उपलब्ध नहीं है, तो एक नया थ्रेड बनाया जाएगा और पूल में जोड़ा जाएगा।
2
कतार
यह ब्लॉकिंग कतार का उपयोग करता है।


यह सिंक्रोनस क्यू का उपयोग करता है
पंक्ति ।


3
थ्रेड लाइफटाइम
यह सभी थ्रेड्स को तब तक चालू रखेगा जब तक कि वे स्पष्ट रूप से समाप्त नहीं हो जाते
साठ सेकंड के लिए उपयोग नहीं किए गए थ्रेड समाप्त हो जाते हैं और कैश से हटा दिए जाते हैं
4.
थ्रेड पूल का आकार
थ्रेड पूल का आकार निश्चित है, इसलिए यह नहीं बढ़ेगा।
थ्रेड पूल शून्य थ्रेड से पूर्णांक तक बढ़ सकता है।MAX_VALUE
5.
केस का प्रयोग करें
जब हम समवर्ती कार्य को सीमित करना चाहते हैं, तो हमें फिक्स्डथ्रेडपूल का उपयोग करना चाहिए
इसका उपयोग तब किया जा सकता है जब आपके पास बहुत से अनुमानित कार्य हों।

फिक्स्ड थ्रेड पूल का उदाहरण

public class Main {
   public static void main(String args[]) throws InterruptedException {
      ExecutorService executors = Executors.newFixedThreadPool(4);
      CountDownLatch latch= new CountDownLatch(2);
      executors.submit(new Service1(latch));
      executors.submit(new Service2(latch));
      latch.await();
      System.out.println("Done");
   }

import java.util.concurrent.CountDownLatch;
public class Service1 implements Runnable {
   CountDownLatch latch;
   public Service1(CountDownLatch latch) {
      super();
      this.latch = latch;
   }
   @Override
   public void run() {
      try {
         Thread.sleep(20000);
      } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
         latch.countDown();
         System.out.println("Services2"+latch.getCount());
      }
   }
   import java.util.concurrent.CountDownLatch;
   public class Service2 implements Runnable {
      CountDownLatch latch;
      public Service2(CountDownLatch latch) {
         super();
         this.latch = latch;
      }
      @Override
      public void run() {
         try {
            Thread.sleep(20000);
         } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   latch.countDown();
   System.out.println("Services2"+latch.getCount());
   }
}

  1. जावा में प्रतीक्षा और नींद के बीच अंतर

    प्रतीक्षा करें () - थ्रेड इस मॉनिटर के स्वामित्व को जारी करता है और तब तक प्रतीक्षा करता है जब तक कि कोई अन्य थ्रेड इस ऑब्जेक्ट के मॉनिटर पर प्रतीक्षा करने वाले थ्रेड को सूचित नहीं करता () विधि या InformAll () विधि के लिए कॉल के माध्यम से जागता है। थ्रेड तब तक प्रतीक्षा करता है जब तक कि वह मॉनिटर का

  1. जावा में थ्रेड और रननेबल के बीच अंतर

    निष्पादन का एक नया धागा बनाने के दो तरीके हैं। एक वर्ग को थ्रेड वर्ग का उपवर्ग घोषित करना है। इस उपवर्ग को थ्रेड क्लास की रन विधि को ओवरराइड करना चाहिए। उपवर्ग का एक उदाहरण तब आवंटित और शुरू किया जा सकता है। थ्रेड बनाने का दूसरा तरीका एक वर्ग घोषित करना है जो रननेबल इंटरफ़ेस को लागू करता है। वह वर्

  1. जावा में अपवाद और त्रुटि के बीच अंतर

    अपवाद और त्रुटियां दोनों थ्रोएबल वर्ग के उपवर्ग हैं। त्रुटि एक समस्या को इंगित करती है जो मुख्य रूप से सिस्टम संसाधनों की कमी के कारण होती है और हमारे आवेदन को इस प्रकार की समस्याओं को नहीं पकड़ना चाहिए। त्रुटियों के कुछ उदाहरण सिस्टम क्रैश त्रुटि और स्मृति त्रुटि से बाहर हैं। त्रुटियां ज्यादातर रनट