जावा में कार्य कतारें: शुरुआती लोगों के लिए संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: जावा में कार्य कतारों की आवश्यकता क्यों है?

\n\n

प्रत्येक डेवलपर को देर-सबेर डेटा की स्ट्रीम प्रोसेसिंग को व्यवस्थित करने की आवश्यकता का सामना करना पड़ता है। एक वेब सर्वर की कल्पना करें जो प्रति सेकंड हजारों अनुरोध स्वीकार करता है, या एक सिस्टम जो ऑनलाइन स्टोर के ऑर्डर प्रोसेस करता है। सब कुछ एक साथ प्रोसेस करना असंभव है — संसाधन सीमित हैं। यहाँ पर कार्य कतारें (task queues) मददगार साबित होती हैं।

\n\n

जावा में कार्य कतार केवल FIFO (First In, First Out) डेटा संरचना नहीं है। यह इसके लिए एक शक्तिशाली उपकरण है:

\n
    \n
  • कार्यों के उत्पादन और उपभोग को अलग करना (Producer-Consumer पैटर्न)
  • \n
  • लोड प्रबंधन — जब सिस्टम व्यस्त होता है तो कार्य कतार में जमा हो जाते हैं
  • \n
  • अतुल्यकालिक प्रसंस्करण — उत्पादक थ्रेड कार्य के पूरा होने की प्रतीक्षा नहीं करता
  • \n
  • थ्रेड्स के बीच संतुलन — कई वर्कर सामान्य कतार से कार्य लेते हैं
  • \n
\n\n

इस लेख में, हम जावा में कतारों के साथ काम करने के सभी बुनियादी पहलुओं को कवर करेंगे: बुनियादी Collection Framework इंटरफ़ेस से लेकर मल्टीथ्रेडेड अनुप्रयोगों के लिए थ्रेड-सुरक्षित कतारों तक।

\n\n

बुनियादी कतारें: Queue और Deque

\n\n

Queue इंटरफ़ेस

\n\n

इंटरफ़ेस java.util.Queue जावा में सभी कतारों का आधार है। यह कतार के साथ काम करने के लिए मानक संचालन प्रदान करता है:

\n\n\n \n \n \n \n
संचालनत्रुटि पर अपवादविशेष मान वापसी
जोड़नाadd(e)offer(e)
निकालना और हटानाremove()poll()
देखना (बिना हटाए)element()peek()
\n\n

विधियों के बीच अंतर स्पष्ट है: यदि कतार खाली है, तो remove() और element() NoSuchElementException फेंकेंगे, जबकि poll() और peek() null लौटाएंगे।

\n\n

सबसे लोकप्रिय Queue कार्यान्वयन:

\n
    \n
  • LinkedList — डबल-लिंक्ड लिस्ट, सामान्य FIFO कतार के रूप में काम करती है
  • \n
  • PriorityQueue — प्राथमिकता कतार, तत्व Comparator द्वारा निर्धारित क्रम में निकाले जाते हैं
  • \n
  • ArrayDeque — ऐरे-आधारित दो-तरफा कतार
  • \n
\n\n

उदाहरण: LinkedList पर सरल कार्य कतार

\n\n
import java.util.LinkedList;\nimport java.util.Queue;\n\npublic class SimpleTaskQueue {\n    public static void main(String[] args) {\n        Queue<String> taskQueue = new LinkedList<>();\n\n        // कार्य जोड़ें\n        taskQueue.offer("डेटाबेस से डेटा लोड करें");\n        taskQueue.offer("ईमेल सूचना भेजें");\n        taskQueue.offer("रिपोर्ट जनरेट करें");\n\n        System.out.println("कतार: " + taskQueue);\n\n        // सभी कार्यों को प्रोसेस करें\n        while (!taskQueue.isEmpty()) {\n            String task = taskQueue.poll();\n            System.out.println("निष्पादित कर रहा हूँ: " + task);\n        }\n\n        System.out.println("सभी कार्य पूर्ण!");\n    }\n}
\n\n

Deque इंटरफ़ेस

\n\n

Deque (Double Ended Queue) दोनों सिरों से तत्वों को जोड़ने और निकालने की अनुमति देता है। यह लचीलापन प्रदान करता है: कतार स्टैक (LIFO) या सामान्य कतार (FIFO) के रूप में काम कर सकती है।

\n\n

Deque के मुख्य तरीके:

\n
    \n
  • addFirst() / offerFirst() — शुरुआत में जोड़ें
  • \n
  • addLast() / offerLast() — अंत में जोड़ें
  • \n
  • removeFirst() / pollFirst() — शुरुआत से निकालें
  • \n
  • removeLast() / pollLast() — अंत से निकालें
  • \n
\n\n

उदाहरण: विलंबित कार्यों के लिए स्टैक के रूप में Deque

\n\n
import java.util.ArrayDeque;\nimport java.util.Deque;\n\npublic class DequeExample {\n    public static void main(String[] args) {\n        De                

ब्लॉग

पुस्तक अनुशंसाएँ