دو قسم کے تکرار کرنے والوں کی حمایت کریں ، پہلے میں سے ایک ناکام ہوجاتا ہے اور دوسرا سلامتی میں ناکام۔ جب جاوا میں استثناء کو سنبھالنے کی بات آتی ہے تو یہ اہم کردار ادا کرتے ہیں۔ ’’ ناکام روزہ اور ناکامی سے محفوظ مسافروں ‘‘ کے اس مضمون میں ، ہم دونوں دوبارہ کرنے والوں کے کام کے ساتھ ساتھ ان کے مابین ضروری فرق کا تجزیہ کریں گے۔
اس مضمون میں زیر بحث نکات ذیل میں ہیں:
تفصیلی وضاحت حاصل کرنے سے پہلے ، ہم خود کو سمورتی ترمیم کے تصور سے واقف کرواتے ہیں۔
سمورتی ترمیم
جب ایک ہی دھاگے (یا ایک سے زیادہ تھریڈز) ، کسی مجموعہ پر اعادہ کرتے ہیں تو ، اس مجموعہ میں عنصر کو شامل کرکے یا حذف کرکے ، یا کسی خاص پوزیشن پر عنصر کی قدر کو اپ ڈیٹ کرکے ، مجموعہ کی ساخت کو تبدیل کرسکتا ہے۔ یہ عمل ہم آہنگی ترمیم کے نام سے جانا جاتا ہے۔
آئیے ہم فوری طور پر ان دو سسٹم پر ایک نظر ڈالتے ہیں جو موضوع کے اوپر تشویش لیتے ہیں ، اسی کی تفصیلات میں جانے سے پہلے ،
فاسٹ فاسٹ سیسم:
کسی سسٹم کو ناکام فاسٹ سسٹم کا لیبل لگایا جاتا ہے ، اگر یہ کسی غلطی کی موجودگی کے فورا بعد ہی بند ہوجاتا ہے۔ آپریشن فوری طور پر ختم کردیئے جاتے ہیں اور ناکامیاں یا غلطیاں بے نقاب ہوجاتی ہیں۔
ناکام نظام:
کسی سسٹم کو ناکام سیفٹ سسٹم کا لیبل لگایا جاتا ہے ، اگر وہ کسی غلطی کے بعد یا غلطی پیش آنے کے بعد بھی کام کرتے رہتے ہیں۔ وہ آپریشن کو منسوخ نہیں کرتے ہیں اور غلطیوں کو بے نقاب کرنے کی بجائے ان کو چھپاتے ہیں۔
جاوا میں یہ آپریٹر کیا ہے؟
جاوا میں پڑنے والے ہمیں جمع کرنے کی اشیاء کو عبور کرنے کی اجازت دیتے ہیں۔ مجموعہ کے ذریعہ واپس لوٹنے والے یا تو تیزی سے ناکام ہوجاتے ہیں یا فطرت میں محفوظ رہتے ہیں۔
فاسٹ آئٹریٹر
جاوا میں تیز رفتار تکرار کرنے والوں کو کسی بھی طرح کی ساخت میں ترمیم کرنے کی اجازت نہیں ہے۔ ساختی ترمیم میں مجموعہ میں کسی بھی عنصر کو شامل کرنے ، اسے ہٹانے یا اس کی تازہ کاری کرتے ہوئے اس کی تازہ کاری شامل ہے۔ اگر تکرار کے عمل کے دوران کسی مجموعہ میں ساختی طور پر ترمیم کی جائے تو ، آئٹرٹر نے ایک کونٹرن موڈن ایفی گیشن پھینک دیا۔
تاہم ، اس بات کا ذکر کرنا ضروری ہے کہ اگر آئٹمرس کو خود طریق کار یعنی ہٹانے () کے طریقہ کار کا استعمال کرتے ہوئے ہٹا دیا جاتا ہے تو ، کوئی رعایت نہیں پھینک دی جاتی ہے۔ یہ ایک مکمل طور پر محفوظ عمل ہے۔ یقینی بنائیں کہ آپ کے پاس ہے جاوا انسٹال ہوا آپ کے سسٹم پر
فیل فاسٹ آئٹریٹر کی مثال:
درآمد java.util.HashMap درآمد java.util.Iterator درآمد java.util.Map عوامی کلاس FailFastExample {عوامی جامد باطل اہم (سٹرنگ [] آرگس) {نقشہ ماہ انڈیکس = نیا ہیش میپ () ماہ انڈیکس.پیٹ ('1' ، 'جنوری ') ماہ انڈیکس ڈاٹ پیٹ (' 2 '،' فروری ') مہینہ انڈیکس.پوت (' 3 '،' مارچ ') آئٹریٹر ایٹریٹر = مہینہ انڈیکس.کیسیٹ (). تکرار کرنے والا () جبکہ (iterator.hasNext ()). System.out .println (monthIndex.get (iterator.next ())) // نقشہ میں کسی عنصر کو شامل کرنا // استثناء اگلے (// طریقہ) کی اگلی کال // پر ڈال دیا جائے گا۔ ماہ انڈیکس ڈاٹ پیٹ ('4' ، 'اپریل')}}
آؤٹ پٹ:
دھاگے میں 'مستثنیٰ' java.util.ConcurrentModificationsException میں رعایت
java.util.HashMap $ HashIterator.nextEntry (نامعلوم ماخذ) پر
اب ہم آگے بڑھیں اور فیل سیف آئٹریٹر پر ایک نظر ڈالیں ،
محفوظ Iterator میں ناکام
فیل فاسٹ ریڈیٹرس کے برعکس ، اگر ناکام ہونے کے عمل کے دوران مجموعہ میں ترمیم کی جائے تو ناکام سیف آئٹرس کسی بھی استثنا کو نہیں پھینکتے ہیں۔ یہ اس حقیقت کی وجہ سے ہے کہ وہ اصل ذخیرہ کی بجائے جمع کرنے کے کلون پر اعادہ کرتے ہیں۔ اصل ذخیرے پر کی جانے والی سنرچناتمک ترمیم ان کا دھیان نہیں ہے۔
تاہم ، یہ دیکھنا چاہئے کہ واقعی میں ناکام سیف آئٹرٹر نام کی کوئی چیز نہیں ہے۔ مناسب رہے گا کہ اسے کمزور سمجھنے سے تعبیر کیا جائے۔ اس کا سیدھا مطلب ہے اگر تکرار کے عمل کے دوران ایک مجموعہ میں ردوبدل کیا جاتا ہے ، جس کا Iterator دیکھتا ہے اس کی ضعیف ضمانت دی جاتی ہے۔ یہ سلوک مختلف مجموعوں کے لئے مختلف ہے اور جاواڈوکس میں دستاویزی ہے۔
ناکامی سے محفوظ آئٹر کی مثال:
عوامی کلاس FailSafeExample {عوامی جامد باطل اہم (سٹرنگ [] آرگس) {کونکورینٹ میپ انڈیکس = نیا کونکورینش ہیش میپ () ماہ انڈیکس پٹ ('1' ، 'جنوری') ماہ انڈیکس پٹ ('2' ، 'فروری') ماہ انڈیکس.پوت ( '3' ، 'مارچ') الٹیراٹر ایٹریٹر = مہینہ انڈیکس.کیسیٹ (). آئٹرٹر () جبکہ (iterator.hasNext ()) {System.out.println (monthIndex.get (iterator.next ())) monthIndex.put ( '4' ، 'اپریل')}}
آؤٹ پٹ:
- جنوری
- فروری
- مارچ
آخر میں اس مضمون میں ہم ان مکرروں کا موازنہ کریں گے ،
اختلافات: فاسٹ فیل اور فیل محفوظ آئٹریٹر
دونوں تکرار کرنے والوں کے مابین ضروری اختلافات ذیل میں دیئے گئے ہیں:
پیرامیٹرز | فاسٹ آئٹریٹر | محفوظ Iterator میں ناکام |
سمورتی ترمیم استثنا پھینک دیں | ہاں ، اگر وہ کسی مجموعے میں ترمیم کرتے ہوئے اس پر اعادہ کرتے ہوئے کوکورنموڈیفیکیشن ایکسیپٹی آن کو پھینک دیتے ہیں۔ | نہیں ، اگر اس میں تکرار کرتے وقت کسی مجموعہ میں ترمیم کی جائے تو وہ کوئی رعایت نہیں ڈالتے۔ |
کلیکشن کلون | نہیں ، وہ عناصر کو عبور کرنے کے لئے اصل ذخیرہ استعمال کرتے ہیں۔ | ہاں ، وہ اصل جمع کرنے کی نقل کو عبور کرنے کیلئے استعمال کرتے ہیں۔ |
میموری اوور ہیڈ | نہیں ، انہیں اضافی میموری کی ضرورت نہیں ہے۔ | ہاں ، انھیں مجموعہ کو کلون کرنے کے لئے اضافی میموری کی ضرورت ہوتی ہے۔ |
مثالیں | ہیش میپ ، ویکٹر ، ارے لسٹ ، ہیش سیٹ | کاپی اوون رائٹآرائے لسٹ |
جاوا کی ورسٹائل زبان میں یہ دوبارہ کرنے والوں کو الگ الگ اور بہت ضرورت ہے۔ اگرچہ فیل سیف کی طرف سے اس کو اطمینان بخش انگوٹی ملتی ہے ، لیکن ناکام فاسٹ ریٹرٹر مضبوط ثابت ہوتا ہے۔
یہ اس مضمون کے آخر میں لاتا ہے۔ اگر آپ مزید معلومات حاصل کرنا چاہتے ہیں تو پھر چیک کریں بذریعہ ایڈوریکا۔ ایڈیورکا کا جاوا جے 2 ای ای اور ایس او اے ٹریننگ اینڈ سرٹیفیکیشن کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور ہائبرنیٹ اینڈ اسپرنگ جیسے جاوا کے مختلف فریم ورکس کے ساتھ ساتھ جاوا کے بنیادی اور اعلی درجے کے دونوں تصورات کی تربیت دینے کے لئے ڈیزائن کیا گیا ہے۔
ہمارے لئے ایک سوال ہے؟ براہ کرم اس 'فیل فاسٹ بمقابلہ ناکام سیف' بلاگ کے تبصرے سیکشن میں اس کا ذکر کریں اور ہم جلد از جلد آپ کے پاس مل جائیں گے۔