جاوا میں موجود خصوصیت کسی پروگرام کے دو یا زیادہ حصوں کی ہم آہنگی پر عمل درآمد کی اجازت دیتی ہے۔ ہر حصہ ایک تھریڈ ہے۔ ان دھاگوں میں اکثر اپنے عمل کو مربوط کرنا ہوتا ہے۔ یہ جاوا میں انتظار اور مطلع جیسے کچھ آخری طریقوں کا استعمال کرتے ہوئے کیا جاتا ہے۔ یہ مضمون ان طریقوں کو تفصیل سے سمجھنے میں آپ کی مدد کرے گا۔
میں مندرجہ ذیل ترتیب میں عنوانات پر گفتگو کروں گا:
- تھریڈ سنکرونائزیشن کیا ہے؟
- انتظار () اور مطلع () کے طریقے کیا ہیں؟
- جاوا میں انتظار () اور مطلع () کو اور کیوں استعمال کریں؟
- مثال
چلو شروع کریں!
تھریڈ سنکرونائزیشن کیا ہے؟
ملٹی تھریڈڈ پروگرام باقاعدگی سے ایسی صورتحال کے ساتھ سامنے آسکتے ہیں جہاں متعدد مواقع ہوں ایک ہی وسائل تک جانے کی کوشش جو دھوکہ دہی اور چونکانے والے نتائج پیدا کرتی ہے۔ اوقات میں ، ایک سے زیادہ دھاگے مشترکہ وسائل تک رسائی حاصل کرنے کی کوشش کر سکتے ہیں ، آپ کو یہ یقینی بنانا ہوگا کہ وسائل کو ایک وقت میں صرف ایک تھریڈ استعمال کرے گا۔ یہ استعمال کرکے کیا جاسکتا ہے جاوا میں ہم وقت سازی۔
اب پولنگ کی بات کر رہے ہیں۔ پولنگ شرط کی بار بار جانچ کرنے کا عمل ہے جب تک یہ درست نہ ہو۔ اس طریقہ کار کی مدد سے نافذ کیا جاتا ہے یہ چیک کرنے کے لئے کہ آیا کوئی خاص حالت درست ہے یا نہیں۔ آپ اس طریقہ کو تھریڈز کے ل use استعمال کرسکتے ہیں لیکن یہ طریقہ سی پی یو کے چکروں کو بھی ضائع کرتا ہے عمل درآمد کو بہت ہی غیر موثر بناتا ہے۔ اس قسم کے کیڑے سے بچنے کے ل Java ، جاوا میں انتظار اور مطلع جیسے طریقے متعارف کروائے گئے ہیں۔
انتظار () اور مطلع () کے طریقے کیا ہیں؟
ملٹی تھریڈنگ مسئلہ سے نمٹنے کے لئے ، انتظار کریں اور مطلع کریں جیسے طریقے استعمال کیا جاتا ہے۔ آبجیکٹ کلاس ان تین حتمی طریقوں کا استعمال کرتی ہے جو دھاگوں کو وسائل کی بند شدہ حیثیت کے بارے میں بات چیت کرنے کی اجازت دیتی ہے۔ انہیں محافظ بلاکس بھی کہا جاتا ہے۔
جاوا اسکرپٹ میں الرٹ کیسے لکھیں
رکو ()
یہ طریقہ اس تھریڈ کا انتظار کرنے کا سبب بنتا ہے جب تک کہ کوئی دوسرا تھریڈ اس آبجیکٹ کے لئے مطلع () اور notifyAll () طریقوں کی درخواست کرے۔ انتظار () کا یہ طریقہ کالنگ تھریڈ کو بتاتا ہے کہ تالہ چھوڑ دیں اور سونے تک جائیں جب تک کہ کچھ دوسرے دھاگے اسی مانیٹر میں داخل نہ ہوں اور مطلع () کو کال کریں۔ یہ طریقہ انتظار سے پہلے تالا کو جاری کرتا ہے اور انتظار () کے طریقہ کار سے واپس آنے سے پہلے تالا کو دوبارہ حاصل کرتا ہے۔
انتظار کریں () طریقہ مطابقت پذیری کے تالے کے ساتھ مضبوطی سے مربوط ہے۔ یہ اس خصوصیت کا استعمال کرتے ہوئے کیا جاتا ہے جو ہم وقت سازی کے طریقہ کار سے براہ راست دستیاب نہیں ہے۔
نحو:
ہم وقت ساز (لوک آبجیکٹ) {جبکہ (! حالت) {لاک اوبیکٹ ڈاٹ ویٹ ()} // یہاں کارروائی کریں}
موجودہ دھاگے میں اس کے آبجیکٹ مانیٹر ہونا چاہئے۔ اسے صرف مطابقت پذیری کے طریقہ کار سے طلب کیا جانا چاہئے بصورت دیگر یہ استثناء دے گا۔
مطلع()
اس طریقہ کو مطلع کرنے کے لئے استعمال کیا جاتا ہے کہ اسے کام کرنے کی ضرورت ہے۔ یہ ایک دھاگے کو اٹھاتا ہے جسے یہ کہتے ہیں انتظار کرو () ایک ہی اعتراض پر طریقہ
نوٹ کریں کہ کال کرنا مطلع() آخر کار ایک تالا نہیں چھوڑتا ہے۔ یہ انتظار کرنے والے دھاگے کو بتاتا ہے کہ یہ جاگ سکتا ہے۔ تاہم ، جب تک مطلع کرنے والا مطابقت پذیر بلاک مکمل نہیں ہوتا تب تک اس لاک کو دراصل ترک نہیں کیا جاتا ہے۔ اب کہیں ، اگر آپ کال کریں گے مطلع() کسی وسیلہ پر لیکن مطلع کرنے والے کو ابھی بھی اس کے مطابقت پذیر بلاک کے اندر 10 سیکنڈ تک کارروائی کرنے کی ضرورت ہے ، تھریڈ جو انتظار کر رہا تھا اس کو نوٹیفائر کو اعتراض پر تالا جاری کرنے کے لئے کم از کم مزید 10 سیکنڈ کا انتظار کرنا پڑے گا ، حالانکہ مطلع کریں () بلایا گیا تھا۔
نحو:
مطابقت پذیری (تالا آبجیکٹ) {// قائم_تھی_ کنڈیشنٹی لاک آبجیکٹ.نوٹیفائٹ () // ضرورت ہو تو کوئی اضافی کوڈ}
سبھی کو مطلع کریں ()
یہ طریقہ ان تمام دھاگوں کو جگانے کے لئے استعمال کیا جاتا ہے جنھوں نے اسی شے پر انتظار () کا نام دیا تھا۔ اعلی ترجیحی تھریڈ بیشتر صورتحال میں پہلے چلے گا حالانکہ اس کی ضمانت نہیں ہے۔ دوسری چیزیں وہی ہیں جو مطلع کریں () طریقہ ہے۔
جاوا میں انتظار () اور مطلع () کو اور کیوں استعمال کریں؟
آپ انتظار کریں اور مطلع کریں کیونکہ ان کا تعلق لاک سے ہوتا ہے اور آبجیکٹ کے پاس ایک لاک ہوتا ہے۔ اگرچہ جاوا میں انتظار اور مطلع کرنا ایک بنیادی تصور ہے ، لیکن ان کی تعریف آبجیکٹ کلاس . حیرت کی بات یہ ہے کہ انتظار اور مطلع کا استعمال کرتے ہوئے کوڈ لکھنا اتنا آسان نہیں ہے۔ آپ انتظار اور مطلع کا استعمال کرتے ہوئے پیداواری صارفین کی پریشانی کو حل کرنے کے لئے کوڈ لکھ کر اس کی جانچ کرسکتے ہیں۔ یہاں ، میں ایک مشترکہ ہے قطار اوردو دھاگےکہا جاتا ہے پروڈیوسر اور صارف . پروڈیوسر تھریڈ نمبر کو مشترکہ قطار میں رکھتا ہے اور صارف تھریڈ مشترکہ بالٹی کے نمبر کھاتا ہے۔
حالت یہ ہے کہ ایک بار جب کوئی شے تیار ہوجائے تو ، صارف کے دھاگے کو مطلع کرنا پڑتا ہے اور اسی طرح ، کھپت پروڈیوسر تھریڈ کو مطلع کرنے کی ضرورت ہے۔ یہ بین دھاگہمواصلاتجاوا میں انتظار اور مطلع کا استعمال کرتے ہوئے حاصل کیا جاتا ہے۔
نوٹ : ڈبلیوآئٹ اور نہیںجھگڑے کے طریقے آبجیکٹ کلاس میں متعین ہیں، اور انہیں مطابقت پذیر بلاک کے اندر بلایا جانا چاہئے۔
مثال
عوامی کلاس Thread1 {عوامی جامد باطل مرکزی (سٹرنگ [] آرگس) {Thread2 b = new Thread2 () b.start () ہم وقت سازی (b) {کوشش کریں {System.out.println ('2 مکمل ہونے کا انتظار کر رہا ہے ...' ) b.wait ()} کیچ (مداخلت کا تصور e) {e.printStackTrace ()} System.out.println ('کل ہے:' + b.total)}}} کلاس تھریڈ 2 تھریڈ 1 {INT کل @ توسیع عوامی باطل رن (int i = 0 i) کیلئے () ہم وقت سازی (یہ) {<=100 i++) { total += i } notify() }}}
نوٹ کریں کہ مذکورہ بالا مثال میں ، Thread2 کا کوئی شبہ ، جو b ہے ، ہم آہنگ ہے۔ مین بی تھریڈ کی کل قیمت سے باہر نکلنے سے پہلے ہی یہ حساب کتاب مکمل کرتا ہے۔
آؤٹ پٹ:
یہ ہمیں اس مضمون کے اختتام تک پہنچا ہے جہاں ہم نے سیکھا ہے جاوا میں انتظار اور مطلع پر۔مجھے امید ہے کہ مذکورہ بالا مشمولات آپ کو بڑھانے میں مددگار ثابت ہوا علم پڑھنا جاری رکھیں ، دریافت کرتے رہیں!
بھی چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کے نیٹ ورک ہیں۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورس طلباء اور پیشہ ور افراد کے لئے ڈیزائن کیا گیا ہے جو جاوا ڈویلپر بننا چاہتے ہیں۔ کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور مختلف اور اعلی درجے کے دونوں جاوا کے تصورات کے لئے آپ کو تربیت دینے کے لئے ڈیزائن کیا گیا ہے جیسے ہائبرنیٹ اینڈ اسپرنگ۔