جاوا تھریڈنگ میں ، "انپلیمنٹس رنن ایبل" اور "تھریڈز تھریڈ" میں کیا فرق ہے؟


جواب 1:

چل رہا ہے

تھریڈ

پبلک کلاس مائی ورک نے رنن ایبل {پبلک باطل رن () {// کو اپنا کام یہاں نافذ کیا ہے ...} work

نیا تھریڈ (نیا مائی ورک)۔ اسٹارٹ ()

اعتراض کی ترکیب

ایک

ایک

مائی ورک

پبلک کلاس مائی تھریڈ نے تھریڈ extend پبلک مائی ٹریڈ () {سپر ("مائی تھریڈ") کو بڑھایا ہے۔ } عوامی باطل رن () {// یہاں آپ کا کام ...}

مائی ٹریڈ ڈاٹ اسٹارٹ ()

وراثت

مائی ٹریڈ

ایک ھے

تھریڈ

"چلانے کے قابل تطبیق" اعلی مقصد پر مبنی نمونہ ہے

  • جاوا میں دوسرے APIs کام کو رنڈ ایبل اور تھریڈ کلاس کی مہارت کی حیثیت سے قبول کرتے ہیں۔ آپ کے کام کو رننبل کی حیثیت سے بیان کرنے سے آپ کے کام کو تھریڈ آبجیکٹ سے منسلک نہیں کرتا ہے۔ مستقبل میں ، آپ اپنا کام کسی اور عملدرآمد تجریدی کے حوالے کرنا چاہتے ہیں۔ جاوا ایک سے زیادہ وراثت کی حمایت نہیں کرتا ، لہذا اگر آپ کی کلاس پہلے ہی کسی شے کو بڑھا دیتی ہے تو ، آپ تھریڈ کو بھی بڑھا نہیں سکتے۔ رنن ایبل کو لاگو کرنے کے ذریعہ ، متعدد تھریڈز شیئر کرسکتے ہیں آپ کے کام کی مثال اگر آپ نے تھریڈ کو بڑھایا تو ، آپ کو ہر تھریڈ کے ل your اپنے کام کی ایک نئی مثال تیار کرنا ہوگی۔

جواب 2:

A2A کا شکریہ۔ جاوا میں ایک دھاگے کو چلانے کے لئے یا تو رنن ایبل لاگو کرکے یا تھریڈ کلاس میں توسیع کریں۔ "اطلاق رنن ایبل" اور "ایکسٹریڈ تھریڈ" کے درمیان فرق مندرجہ ذیل ہے ،

  1. رنڈ ایبل کو توسیع دینے اور اس پر عمل درآمد کرنے کے درمیان پہلا اور سب سے اہم فرق اس حقیقت سے پیدا ہوتا ہے کہ جاوا میں ایک کلاس صرف ایک کلاس بڑھا سکتا ہے۔ لہذا اگر آپ تھریڈ کلاس میں توسیع کرتے ہیں تو آپ کی کلاس اس آپشن سے محروم ہوجاتی ہے اور وہ دوسری کلاس میں توسیع نہیں کرسکتی ہے ، لیکن اگر آپ رنن ایبل کو لاگو کرتے ہیں تو آپ کا تھریڈ کلاس پھر بھی ایک اور کلاس میں توسیع کرسکتا ہے۔ آپ کی کلاس جس کی آپ کو ضرورت نہیں ہوسکتی ہے۔ یہ اضافی ہیڈ کا سبب بنے گی۔ آپ رنن ایبل انٹرفیس کو لاگو کرکے اس اوور ہیڈ کو ختم کرسکتے ہیں۔ آبجیکٹ اورینٹڈ پروگرامنگ میں ، کلاس میں توسیع کرنے کا مطلب موجودہ کلاس میں ترمیم یا بہتری لانا ہے۔ اگر آپ کلاس کو بہتر نہیں کررہے ہیں تو ، پھر اسے بڑھانا اچھا عمل نہیں ہے۔ لہذا ، رنن ایبل کو لاگو کرنے کا بہترین مقصد پر مبنی ڈیزائن کا مشق ہوگا۔ "انپلیمنٹس رنن ایبل" آپ کے کوڈ کو ڈھیلے ڈھکے جوڑ دیتا ہے۔ کیونکہ یہ کام کو رنر سے الگ کرتا ہے۔ "بڑھتی ہوئی تھریڈ" آپ کے کوڈ کو مضبوطی سے جوڑ دے گی۔ کیونکہ ، ایک کلاس دونوں ٹاسک کنٹینر کے ساتھ ساتھ رنر کے طور پر بھی کام کرے گی۔ قابل عمل رنن ایبل آپ کے کوڈ کی دوبارہ پریوستیت کو بہتر بناتا ہے۔ کیونکہ ، رنن ایبل میں صرف ٹاسک ہوتا ہے اور آپ اسے جہاں کہیں اور جب چاہیں استعمال کرسکتے ہیں۔ تھریڈ اور رنن ایبل کے درمیان دوسرا فرق اس حقیقت سے نکلتا ہے کہ آپ صرف رن () طریقہ کار کے لئے تھریڈ کلاس بڑھا رہے ہیں لیکن آپ کو دوسرے تمام طریقوں سے اوور ہیڈ مل جائے گا۔ تھریڈ کلاس سے آتے ہیں۔ لہذا ، اگر آپ کا مقصد صرف متوازی عملدرآمد کے لئے رن () طریقہ میں کچھ کوڈ لکھنا ہے تو پھر تھریڈ کلاس میں توسیع کے بجائے رننبل کا استعمال کریں۔

شکریہ،

سیکھنے کا آسان طریقہ


جواب 3:

جاوا میں "تطبیق چلانے والے" اور "تھریڈ میں توسیع" کے درمیان فرق

1. وراثت کا اختیار: "توسیع دھاگے" کے نقطہ نظر کی حد یہ ہے کہ اگر آپ تھریڈ میں توسیع کرتے ہیں تو ، آپ کسی اور چیز کو بڑھا نہیں سکتے۔ جاوا متعدد وراثت کی حمایت نہیں کرتا ہے۔ حقیقت میں ، آپ کو تھریڈ کلاس سلوک کی ضرورت نہیں ہے ، کیونکہ دھاگے کو استعمال کرنے کے ل you آپ کو بہرحال کسی کو تیز کرنے کی ضرورت ہے۔

دوسری جانب،

رنن ایبل انٹرفیس پر عمل درآمد آپ کو اپنی پسند کی کلاس میں توسیع کرنے کا انتخاب فراہم کرتا ہے ، لیکن پھر بھی اس طرز عمل کی وضاحت کرتا ہے جو الگ تھریڈ کے ذریعہ چلایا جائے گا۔

२. دوبارہ پریوستیت: "چلانے کے قابل اطلاق" میں ، ہم ایک مخصوص طرز عمل کی نوکری کے لئے ایک مختلف رنن ایبل کلاس تشکیل دے رہے ہیں (اگر آپ جو کام کرنا چاہتے ہیں وہ نوکری ہے)۔ اس سے ہمیں مخصوص کو دوبارہ استعمال کرنے کی آزادی ملتی ہے

جب بھی ضرورت ہو سلوک کی نوکری۔

"توسیع دھاگہ" میں تھریڈ اور ملازمت دونوں کے لئے مخصوص سلوک کوڈ ہوتا ہے۔ لہذا ایک بار جب تھریڈ کا اطلاق مکمل ہوجاتا ہے ، تو اسے دوبارہ دوبارہ شروع نہیں کیا جاسکتا ہے۔

3. آبجیکٹ اورینٹڈ ڈیزائن: چلانے کے قابل نفاذ کو ترجیح دی جانی چاہئے۔ یہ تھریڈ سلوک کو مہارت یا ترمیم نہیں کرتا ہے۔ آپ دھاگے کو چلانے کے لئے کچھ دے رہے ہیں۔ ہم یہ نتیجہ اخذ کرتے ہیں کہ مرکب بہتر طریقہ ہے۔ مرکب کا مطلب ہے دو اشیاء A اور B سے مطمئن ہوتا ہے۔

"توسیع دھاگہ" ایک اچھی آبجیکٹ اورینٹڈ پریکٹس نہیں ہے۔

L. آسانی سے جوڑا: "چلانے کے قابل بناتا ہے" کوڈ کو آسانی سے جوڑا اور پڑھنے میں آسانی پیدا کرتا ہے۔

کیونکہ کوڈ کو دو کلاسوں میں تقسیم کیا گیا ہے۔ تھریڈ مخصوص کوڈ کے لئے تھریڈ کلاس اور آپ کی ملازمت کے ل your آپ کے چلانے کے قابل نفاذ کلاس جو ایک تھریڈ کوڈ کے ذریعہ چلانی چاہئے۔

"توسیع دھاگہ" کوڈ کو مضبوطی سے جوڑتا ہے۔ سنگل کلاس میں تھریڈ کوڈ کے ساتھ ساتھ وہ نوکری بھی ہوتی ہے جسے تھریڈ کے ذریعہ انجام دینے کی ضرورت ہوتی ہے۔

5. افعال اوورہیڈ: "توسیع دھاگے" کا مطلب ہے تھریڈ کلاس کے تمام افعال وراثت میں جس کی ہمیں ضرورت نہیں ہوسکتی ہے۔ دھاگے طبقے کے افعال اوور ہیڈ کے بغیر رنن ایبل کے ذریعہ نوکری آسانی سے کی جاسکتی ہے۔