پروگرامروں میں اس کی تعمیراتی خصوصیات کی جامع رینج کی وجہ سے انتہائی مقبول ہے۔ زیادہ تر اوقات آپ کے مسئلے کے ظاہر ہونے سے پہلے ہی اس کا حل نکال رہے ہوں گے۔ اس کا ایک انتہائی مفید اور اہم حصہ جاوا میں بلاکنگ کیو انٹرفیس ہے۔ اس مضمون کے ذریعہ ، میں جاوا میں بلاکنگ کیوئیو اور اس پر عمل درآمد کرنے کے طریقوں پر کچھ روشنی ڈالوں گا۔
ذیل میں اس مضمون میں شامل عنوانات ہیں:
- جاوا میں بلاکنگ کیوئ انٹرفیس
- جاوا میں بلاکنگ کیوئ کے لئے تعمیر کنندگان کی اقسام
- بلاکنگ کیویو انٹرفیس میں طریقے
- مسدودیت
جاوا میں بلاکنگ کیوئ انٹرفیس
جاوا میں بلاکنگ کیوئ ایک انٹرفیس ہے جو جاوا 1.5 میں شامل کیا گیا تھا اور اس کے ساتھ ساتھ کچھ دوسرے ہم آہنگی یوٹیلٹی کلاسز جیسے کونکورینٹ ہش میپ ، کاپی آؤن رائٹآرائ لسٹ ، وغیرہ۔ بلاکنگ کیو انٹرفیس کا ہے java.util.concurrent پیکیج .یہ انٹرفیس بلاکنگ کو چالو کرکے بہاؤ کے قابو میں اضافہ کرتا ہے ، اگر کوئی تھریڈ خالی قطار کو تلاش کرنے کی کوشش کر رہا ہو یا پوری قطار کو قطار میں لے جائے۔ دونوں ہی معاملات میں ، یہ انٹرفیس کارآمد ہے۔آسان الفاظ میں ، فرض کریں a پہلے سے ہی پوری قطار میں عناصر کو شامل کرنے کی کوشش کر رہا ہے۔ پروگرام کے اس مقام پر ، بلاکنگ کیو کو طلب کیا جائے گا جو اس خاص دھاگے کو روک دے گا جب تک کہ دوسرا تھریڈ جگہ بنانے کیلئے قطار کو جاری نہ کرے۔ یہ یا تو کسی عنصر (زبان) کی پوری قطار کو کلیئرنس کے مسترد کرنے کا نتیجہ ہوسکتا ہے۔ اسی طرح ، بلاکنگ کیو کو پہلے سے خالی قطار کو تلاش کرنے کی کوشش کرنے والے دھاگے کو روکنے کے لئے درخواست کی جائے گی جب تک کہ کچھ دوسرے دھاگے داخل نہ ہوں یا خالی جگہ میں عنصر شامل نہ کریں۔ قطار .
جاوا میں بلاکنگ کیو انٹرفیس کے ساتھ کام کرتے ہوئے ، آپ کو یہ یاد رکھنا چاہئے کہ یہ کوئی قدر کو قبول نہیں کرتا ہے۔ اگر آپ یہ کرنے کی کوشش کرتے ہیں کہ یہ فوری طور پر NullPointerException پھینک دے گا۔ درج ذیل اعداد و شمار جاوا میں بلاکنگ کیو انٹرفیس کے کام کی نمائندگی کرتے ہیں۔
یہ انٹرفیس یہ بنیادی طور پر پروڈیوسر صارفین کے درمیان استعمال ہوتا ہے کیونکہ یہ تھریڈ سیف ہے۔میرا مطلب یہ ہے کہ بلاکنگ کیو انٹرفیس کو ایک قطار بنانے کے لئے استعمال کیا جاسکتا ہے جسے پروڈیوسر اور صارف دونوں مشترکہ کرسکتے ہیں۔
جاوا میں بلاکنگ کیوئ کے ساتھ کام کرنے کے ل first ، پہلے ، آپ کو اس کی اقسام سے واقف ہونے کی ضرورت ہے۔ مجھے اس مضمون کے اگلے حصے میں آپ سے ان کا تعارف کرانے دیں۔
جاوا میں بلاکنگ کیوئ کے لئے تعمیر کنندگان کی اقسام
جاوا میں بلاکنگ کیو انٹرفیس کے لئے دو طرح کے کنسٹرکٹر موجود ہیں۔
- بے ترتیب قطار: اس قسم کی قطار کے ل the ، گنجائش انٹیجر پر سیٹ کی جائے گی۔ MAX_VALUE۔ بے لگام قطار کبھی بھی مسدود نہیں ہوگی کیونکہ یہ متحرک طور پر بڑھ سکتی ہے ، ہر بار جب عنصر داخل کیا جاتا ہے۔ ذیل میں ایک بے ترتیب قطار بنانے کیلئے نحو ہے۔
بلاکنگ کیوئ بی کیو = نیا لنکڈ بلاکنگ ڈیک ()
- پابند قطار: اس طرح کی قطار کے ل you ، آپ کو تخلیق کے وقت قطار کی گنجائش کو منتقل کرنے کی ضرورت ہے یعنی بطور a بلڈر پیرامیٹر ایک بار جب سائز تفویض ہوجائے تو ، اسے تبدیل نہیں کیا جاسکتا۔ پابند قطار بنانے کیلئے نحو ذیل میں ہے۔
بلاکنگ کیوئ بی کیو = نیا لنکڈ بلاکنگ ڈیک (10)
اب جب آپ جاوا میں بلاکنگ کیوئ کو نافذ کرنے کے طریقوں سے واقف ہیں تو مجھے اس کے کچھ طریقوں کی فہرست بتانے دو۔
روبی روزگار کی منڈی پر روبی
بلاکنگ کیویو انٹرفیس میں طریقے
طریقہ | تفصیل |
بولین ایڈ (ای ای) | یہ طریقہ اس قطار میں مخصوص عنصر کو داخل کرنے میں مدد کرتا ہے اگر قطار میں جگہ موجود ہے ورنہ یہ ہوجائے گیپھینکنا aIllegalStateException |
بولین پر مشتمل ہے (آبجیکٹ O) | اگر قطار میں مخصوص عنصر شامل ہوں تو یہ طریقہ کارآمد ہوجاتا ہے |
انٹرین ڈرینٹو (مجموعہ سی) | یہ طریقہ قطار سے تمام دستیاب عناصر کو ہٹا دے گا اور ان کو مخصوص مجموعہ میں شامل کردے گا |
انٹین ڈرینٹو (مجموعہ سی ، انٹیل میکسمینٹ) | یہ طریقہ قطار سے دستیاب عناصر کی دی گئی تعداد پر نکال دے گا اور انہیں مخصوص میں شامل کرے گا |
بولین پیش کش (ای ای) | یہ طریقہ قطع کردہ عنصر کو قطار میں داخل کرے گا اگر یہ پورا نہیں ہوتا ہے اور سچ واپس آجاتا ہے ، ورنہ یہ جھوٹ واپس آئے گا |
بولین پیش کش (ای ای ، طویل وقت ختم ، ٹائم یونٹ یونٹ) | یہ طریقہ قطار میں مخصوص عنصر داخل کرے گا۔ اگر قطار مکمل ہو تو ، جگہ دستیاب ہونے کے لئے یہ مخصوص انتظار کے وقت تک انتظار کرے گا۔ |
ای پول (طویل وقت ختم ، ٹائم یونٹ یونٹ) | یہ طریقہ قطار کے سر کو بازیافت اور نکالنے میں مدد کرتا ہے۔ اگر قطار خالی ہے تو ، عنصر کے دستیاب ہونے کے لئے یہ مخصوص انتظار کے وقت تک انتظار کرے گا |
باطل ڈال (E ای) | یہ طریقہ کار کے دستیاب ہونے کے انتظار میں قطار میں مخصوص عنصر کو قطار میں داخل کرے گا |
INCC क्षमता () | اس طریقہ کار سے اضافی عناصر کی تعداد واپس کرنے میں مدد ملتی ہے جو یہ قطار بلاک کیے بغیر مثالی طور پر قبول کرسکتے ہیں |
بولین ہٹائیں (آبجیکٹ O) | اس طریقہ کار سے قطعی عنصر کی ایک ہی مثال قطار سے ہٹ جائے گی اگر وہ موجود ہو |
ای لے () | قطعہ خالی ہونے کی صورت میں یہ طریقہ کسی عنصر کے دستیاب ہونے کا انتظار کرکے قطار کے سر کو بازیافت اور نکالنے میں مددگار ثابت ہوگا۔ |
مسدودیت
یہاں میں جاوا میں جہاں بلاکنگ کیو کی ایک سادہ سی مثال نافذ کروں گاکلاس ادوپروڈوسر ڈیٹا تیار کرے گا اور اس میں داخل کرے گا قطار ، بیک وقت ، ایک اور کلاس ، اڈو کونسمر اسی قطار سے ڈیٹا کو ختم کردے گی۔
اس کے لئے میں 3 کلاسز تشکیل دوں گا۔
- ایڈی پروڈوسر
- ایڈوکنسمر
- ایڈوریکمین
آئیے اب ان میں سے ہر ایک کلاس ایک ایک کرکے بنائیں۔
ایڈوپروڈوسرس جاوا
پیکیج ایوریکا درآمد java.util.concurrent.BlockingQueue پبلک کلاس ادو پروڈوسر چلاتا ہے چل رہا ہے Bl نجی حتمی بلاکنگ کیو قطار @ اوور رائیڈ پبلک باطل رن () {کوشش {عمل ()} کیچ (رکاوٹ پیدا ہوا ای) {Thread.currentThread () rupt رکاوٹ ()} v نجی باطل عمل () نے خلل پیدا کردیا {// قطار میں 10 انٹس ڈال دیں (انٹراٹ i = 0 i<10 i++) { System.out.println('[Producer] Add : ' + i) queue.put(i) System.out.println('[Producer] Queue's Remaining Capacity : ' + queue.remainingCapacity()) Thread.sleep(150) } } public EduProducer(BlockingQueue queue) { this.queue = queue } }
اڈو کونسمر.جاوا
پیکیج ایڈیورکا درآمد java.util.concurrent.BlockingQueue پبلک کلاس EduCuumer چلاتا ہے چل رہا ہے {نجی فائنل بلاکنگ کیو قطار @ اوور رائیڈ پبلک باطل رن () {کوشش کریں {جبکہ (سچ) {انٹیجر لے لو = قطار ڈاٹ کام () عمل (لے)}} کیچ (مداخلت کا تصور ای) read تھریڈ کوٹرنٹ تھریڈ (). رکاوٹ ()}} نجی باطل عمل (انٹیجر ٹیک) نے رکاوٹ پیدا کی rows سسٹم آؤٹ.پریٹلن ('[صارف] کو ہٹا دیں:' + لے) تھریڈ ڈراپ (500)} عوامی ایڈو کنسومر (بلاکنگ کیو قطار). this.ueue = قطار}
ایڈوریکا مائن.جاوا
سی ++ جاوا ازگر
پیکیج ایوریکا درآمد java.util.concurrent.BlockingQueue درآمد java.util.concurrent.LinkedBlockingQueue عوامی کلاس EdurekaMain {عوامی جامد باطل مین (سٹرنگ [] آرگس) {بلاکنگ کیو قطار = نیا لنکڈ بلاکنگ کیوئ (10) نیا تھریڈ (نیا ایڈیپروڈو) . اسٹارٹ () نیا تھریڈ (نیا ایڈو کنسمر (قطار)) شروع کریں ()}}
ایک بار جب آپ کوڈ لکھنے کا کام ختم کردیں تو ، مندرجہ ذیل آؤٹ پٹ کو حاصل کرنے کے لئے پروگرام پر عمل کریں:
[پروڈیوسر] شامل کریں: 0 [کنزیومر] لیں: 0 [پروڈیوسر] قطار کی باقیات کی گنجائش: 9 [پروڈیوسر] شامل کریں: 1 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 9 [پروڈیوسر] شامل کریں: 2 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 8 [پروڈیوسر] ] شامل کریں: 3 [پروڈیوسر] قطار کی باقیات گنجائش: 7 [صارف] لیں: 1 [پروڈیوسر] شامل کریں: 4 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 7 [پروڈیوسر] شامل کریں: 5 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 6 [پروڈیوسر] شامل کریں : 6 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 5 [صارف] لیں: 2 [پروڈیوسر] شامل کریں: 7 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 5 [پروڈیوسر] شامل کریں: 8 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 4 [پروڈیوسر] شامل کریں: 9 [پروڈیوسر] قطار کی باقی ماندہ صلاحیت: 3 [صارف] لیں: 3 [صارف] لیں: 4 [صارف] لیں: 5 [صارف] لیں: 6 [صارف] لیں: 7 [صارف] لیں: 8 [صارف] لے: 9
یہ ہمیں جاوا میں بلاکنگ کیوئ سے متعلق اس مضمون کے آخر تک پہنچا ہے۔ اگر آپ جاوا کو مزید تفصیل سے سیکھنا چاہتے ہیں تو آپ ہماری رجوع کرسکتے ہیں اس کے ساتھ ساتھ.
اب جب آپ جاوا میں بلاکنگ کیو کی بنیادی باتوں کو سمجھ چکے ہیں تو ، چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کے نیٹ ورک ہیں۔ ایڈورکا کا جاوا جے 2 ای ای اور ایس او اے ٹریننگ اینڈ سرٹیفیکیشن کورس طلباء اور پیشہ ور افراد کے لئے ڈیزائن کیا گیا ہے جو جاوا ڈویلپر بننا چاہتے ہیں۔ کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور ہائبرنیٹ اینڈ اسپرنگ جیسے جاوا کے مختلف فریم ورکوں کے ساتھ ساتھ جاوا کے دونوں بنیادی اور اعلی درجے کے تصورات کی تربیت دینے کے لئے ڈیزائن کیا گیا ہے۔
ہمارے لئے ایک سوال ہے؟ برائے کرم اس کو 'جاوا میں بلاکنگ کیو' کے تبصرے سیکشن میں اس کا ذکر کریں اور ہم جلد از جلد آپ کے پاس مل جائیں گے۔