जावा में टास्क कतारें: उदाहरणों के साथ पूर्ण गाइड

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

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

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

जावा में टास्क कतारें: मूल बातों से लेकर मल्टीथ्रेडेड समाधान तक



टास्क कतार (Task Queue) सॉफ्टवेयर डेवलपमेंट में मूलभूत पैटर्न में से एक है। जावा में, यह तंत्र Queue इंटरफ़ेस और इसके अनेक कार्यान्वयनों के माध्यम से लागू किया गया है। कतार आपको कार्यों को उनके आने के क्रम (FIFO — First In, First Out) में प्रोसेस करने की अनुमति देती है, जो थ्रेड पूल, एसिंक्रोनस ऑपरेशन और वितरित सिस्टम के साथ काम करते समय विशेष रूप से महत्वपूर्ण है।



इस लेख में, हम विस्तार से जानेंगे कि जावा में टास्क कतारों के साथ कैसे काम करें: बेसिक इंटरफ़ेस से लेकर उन्नत मल्टीथ्रेडेड कार्यान्वयन तक। आप जानेंगे कि विभिन्न परिदृश्यों में किन क्लासेस का उपयोग करना है और सामान्य गलतियों से कैसे बचना है।



1. Queue इंटरफ़ेस और बुनियादी संचालन



Queue इंटरफ़ेस Java Collections Framework का हिस्सा है। यह कतार के साथ काम करने के लिए बुनियादी विधियों को परिभाषित करता है:



  • add(E e) — एलिमेंट जोड़ता है, ओवरफ्लो होने पर अपवाद फेंकता है;
  • offer(E e)
  • — एलिमेंट जोड़ता है, विफलता पर false लौटाता है;
  • remove() — हेड एलिमेंट को हटाता है और लौटाता है, कतार खाली होने पर अपवाद फेंकता है;
  • poll() — हेड एलिमेंट को हटाता है और लौटाता है, खाली कतार पर null लौटाता है;
  • element() — बिना हटाए हेड एलिमेंट लौटाता है, खाली कतार पर अपवाद;
  • peek() — बिना हटाए हेड एलिमेंट लौटाता है, खाली कतार पर null।


कतार के साथ बुनियादी कार्य का उदाहरण:



import java.util.LinkedList;import java.util.Queue;

public class SimpleQueueExample { public static void main(String[] args) { Queue<String> taskQueue = new LinkedList<>();

// कार्य जोड़ना taskQueue.offer("कार्य 1: ऑर्डर प्रोसेसिंग"); taskQueue.offer("कार्य 2: ईमेल भेजना"); taskQueue.offer("कार्य 3: रिपोर्ट जनरेशन");

System.out.println("वर्तमान कार्य: " + taskQueue.peek()); System.out.println("कतार का आकार: " + taskQueue.size());

// सभी कार्यों को प्रोसेस करना while (!taskQueue.isEmpty()) { String task = taskQueue.poll(); System.out.println("निष्पादित हो रहा है: " + task); } }}


निष्पादन परिणाम:

वर्तमान कार्य: कार्य 1: ऑर्डर प्रोसेसिंगकतार का आकार: 3निष्पादित हो रहा है: कार्य 1: ऑर्डर प्रोसेसिंगनिष्पादित हो रहा है: कार्य 2: ईमेल भेजनानिष्पादित हो रहा है: कार्य 3: रिपोर्ट जनरेशन


2. कतारों के मुख्य कार्यान्वयन



जावा Queue इंटरफ़ेस के कई कार्यान्वयन प्रदान करता है, जिनमें से प्रत्येक विशिष्ट परिदृश्यों के लिए उपयुक्त है।



2.1. LinkedList एक कतार के रूप में

LinkedList सबसे सरल और बहुमुखी कार्यान्वयनों में से एक है। यह एक द्विदिश सूची के रूप में काम करता है, जो दोनों सिरों से एलिमेंट को तेज़ी से जोड़ने और हटाने की अनुमति देता है। हालांकि, बड़े डेटा वॉल्यूम के लिए, रेफरेंस स्टोरेज के ओवरहेड के कारण प्रदर्शन कम हो सकता है।



Queue<Integer> linkedQueue = new LinkedList<>();linkedQueue.add(10);linkedQueue.add(20);linkedQueue.add(30);System.out.println(linkedQueue.poll()); // 10


2.2. PriorityQueue — प्राथमिकता वाली कतार

PriorityQueue सख्त FIFO क्रम का पालन नहीं करती है। एलिमेंट उनकी प्राथमिकता के क्रम में निकाले जाते हैं, जो या तो प्राकृतिक क्रम (Comparable) या कम्पेरेटर द्वारा निर्धारित की जाती है। यह उन सिस्टम के लिए एक आदर्श विकल्प है जहाँ कुछ कार्य दूसरों से अधिक महत्वपूर्ण होते हैं।



import java.util.PriorityQueue;import java.util.Queue;

public class PriorityQueueExample { public static void main(String[] args) { Queue<Task> priorityQueue = new PriorityQueue<>( (t1, t2) -> Integer.compare(t1.priority, t2.priority) );

ब्लॉग

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