JavaRush /جاوا بلاگ /Random-SD /ترجمو: موضوع جي لحاظ کان مٿي 50 انٽرويو سوال. حصو 1.
KapChook
سطح
Volga

ترجمو: موضوع جي لحاظ کان مٿي 50 انٽرويو سوال. حصو 1.

گروپ ۾ شايع ٿيل
اصل مضمون جي ترجمي جو پهريون حصو Top 50 Java Thread Interview Questions Answers for Freshers, Experied Programmers. ٻيو حصو. نوٽ: مضمون وڏو ٿيو، ان ڪري هڪ موضوع ۾ نه ٿو اچي. ان کان علاوه، اهو ڪافي پيچيده آهي، مون ان کي گوگل ڪرڻ جي ڪوشش ڪئي، پر اڃا تائين. تنهن ڪري، اسان شرڪت ڪندڙن کان پڇون ٿا جيڪي انگريزيء ۾ روانا آهن اصل تي هڪ نظر وٺو ۽ ان جي ترجمي سان موازنہ ڪريو، جيڪڏهن اهي ڪجهه غلط سمجهي يا غلط ترجمو ڪيو. اڳ ۾ توهان جي مهرباني. ڪنهن به انٽرويو ۾، سينيئر يا جونيئر، تجربو يا شروعاتي، توهان کي موضوعن، متوازي ۽ ملٽي ٿريڊنگ بابت ڪجهه سوالن سان منهن ڏيڻو پوندو. حقيقت ۾، اتفاق جي لاءِ هي ٺهيل مدد جاوا جي وڏي طاقتن مان هڪ آهي ۽ ان کي انٽرپرينيوئرز ۽ پروگرامرز جي وچ ۾ مقبوليت حاصل ڪرڻ ۾ مدد ڪئي آهي. گهڻيون منافعي جاوا ڊولپر پوزيشن جي ضرورت هوندي آهي بهترين ملٽي ٿريڊنگ صلاحيتن ۽ تجربي جي ترقي، ڊيبگنگ، ۽ ٽيوننگ اعليٰ ڪارڪردگي، گهٽ دير واري ايپليڪيشنن کي. تنهن ڪري، اهو انٽرويو ۾ سڀ کان وڌيڪ گهربل صلاحيتن مان هڪ آهي. هڪ عام جاوا انٽرويو ۾، انٽرويو وٺندڙ آهستي آهستي ٿريڊز جي بنيادي مفهومن سان شروع ڪندو آهي، سوال پڇندو آهي جيئن ته ٿريڊن جي ضرورت ڇو آهي، انهن کي ڪيئن ٺاهيو وڃي، انهن کي ٺاهڻ جو ڪهڙو طريقو بهتر آهي، ٿريڊ مان ورثي ۾ مليل آهي يا هلائڻ لائق آهي، ۽ پوءِ آهستي آهستي اڳتي وڌي ٿو. اتفاق جي مشڪلاتن تي، ترقي ۾ مشڪلاتون متوازي ايپليڪيشنون، JDK 1.5 ۾ متعارف ڪرايل اعلي سطحي اتفاق افاديت، متوازي ايپليڪيشنن جا اصول ۽ ڊيزائن جا نمونا، ۽ کلاسک ملٽي ٿريڊنگ مسئلا. صرف ان ڪري ته اهو ڪافي ناهي ته صرف ملٽي ٿريڊنگ جي بنيادي ڳالهين کي ڄاڻڻ لاءِ، توهان کي ضرور ڄاڻڻ گهرجي ته اتفاق جي مسئلن جهڙوڪ ڊيل لاڪ، نسل جي حالتن، ياداشت جي غير مطابقت، ۽ مختلف ٿريڊ-حفاظتي مسئلن کي ڪيئن حل ڪجي. اهي صلاحيتون چڱيءَ طرح آزمايل آهن، مختلف ملٽي ٿريڊنگ ۽ هم وقتي چئلينج پيش ڪندي. ڪيترائي جاوا ڊولپر عام طور تي صرف انٽرويو کان پهريان سوالن کي پڙهندا آهن، جيڪا خراب شيء ناهي، پر توهان کي اهو سمجهڻ گهرجي. انهي سان گڏ، سوالن کي گڏ ڪرڻ ۽ ساڳيو مشق ڪرڻ تمام گهڻو وقت ضايع ڪري ٿو، تنهنڪري مون هن فهرست ٺاهي.
  1. جاوا ۾ هڪ موضوع ڇا آهي؟

  2. ھڪڙو سلسلو ھڪڙو آزاد عمل جو رستو آھي. ان جو مقصد مشين ۾ موجود ڪيترن ئي پروسيسرز جو فائدو وٺڻ آهي. گھڻن موضوعن کي استعمال ڪندي، توھان تيز ڪري سگھو ٿا سي پي يو- پابند ڪمن کي. مثال طور، جيڪڏھن ھڪڙي سلسلي کي 100 مليسيڪنڊ لڳن ٿا ھڪڙي ڪم کي مڪمل ڪرڻ لاء، توھان استعمال ڪري سگھو ٿا 10 موضوعن کي گھٽائڻ لاءِ 10 مليسيڪنڊس تائين. جاوا ٻوليءَ جي سطح تي ملٽي ٿريڊنگ لاءِ بهترين مدد فراهم ڪري ٿي ۽ اهو، ان کان علاوه، ان جي مضبوط فائدن مان هڪ آهي.
  3. جاوا ۾ سلسلي ۽ عمل جي وچ ۾ فرق؟

  4. هڪ سلسلي هڪ عمل جو هڪ ذيلي سيٽ آهي؛ ٻين لفظن ۾، هڪ عمل ڪيترن ئي موضوعن تي مشتمل ٿي سگهي ٿو. ٻه عمل مختلف ميموري جي جڳهن ۾ هلندا آهن، پر سڀئي موضوع ساڳيا ميموري اسپيس حصيداري ڪندا آهن. هن کي اسٽيڪ ميموري سان نه وساريو، جيڪا هر سلسلي لاءِ مختلف آهي ۽ ان سلسلي جي مقامي ڊيٽا کي ذخيرو ڪرڻ لاءِ استعمال ٿئي ٿي.
  5. هڪ تار ڪيئن ٺاهيو؟

  6. ٻوليءَ جي سطح تي، ٿريڊ ٺاهڻ جا ٻه طريقا آهن. java.lang.Thread ڪلاس جو هڪ اعتراض هڪ سلسلي جي نمائندگي ڪري ٿو، پر ان کي هلائڻ لاء هڪ ڪم جي ضرورت آهي، جيڪو هڪ اعتراض آهي جيڪو java.lang.Runnable انٽرفيس کي لاڳو ڪري ٿو. جيئن ته ٿريڊ ڪلاس رنبل انٽرفيس کي لاڳو ڪري ٿو، ان ڪري توھان رن () طريقي کي ختم ڪري سگھو ٿا پنھنجي ڪلاس کي ٿريڊ مان حاصل ڪري يا ان ۾ رنبل انٽرفيس کي لاڳو ڪري.
  7. Runnable ڪڏهن استعمال ڪجي ۽ ڪڏھن Thread استعمال ڪجي؟

  8. هي پوئين سوال ۾ اضافو آهي. جيئن اسان ڄاڻون ٿا، هڪ ٿريڊ ٺاهي سگهجي ٿو وراثت واري ڪلاس مان وراثت سان يا رنبل انٽرفيس کي لاڳو ڪندي. سوال ٿو پيدا ٿئي ته ڪهڙو طريقو بهتر آهي ۽ ڪهڙو استعمال ڪجي؟ هن سوال جو جواب ڏيڻ آسان آهي جيڪڏهن توهان ڄاڻو ٿا ته جاوا ڪيترن ئي طبقي ورثي کي سپورٽ نٿو ڪري پر توهان کي ڪيترن ئي انٽرفيس کي لاڳو ڪرڻ جي اجازت ڏئي ٿي. جنهن جو مطلب اهو آهي ته بهتر آهي لاڳو ڪرڻ Runnable جيڪڏهن توهان چاهيو ٿا ته ڪنهن ٻئي طبقي مان ورثي ۾.
  9. شروعات () ۽ رن () طريقن جي وچ ۾ فرق؟

  10. ماضي جي چال سوالن مان هڪ، پر اهو اڃا تائين ڪافي سٺو آهي ته جاوا ۾ ملٽي ٿريڊنگ جي سطحي سمجھ ۾ فرق ڪرڻ لاءِ. start() طريقو نئون ٿريڊ شروع ڪرڻ لاءِ استعمال ڪيو ويندو آهي. جيتوڻيڪ start() رن () طريقي کي اندروني طور ڪال ڪري ٿو، اهو ساڳيو نه آهي جيئن صرف سڏڻ run(). جيڪڏهن توهان رن () کي عام طريقي سان سڏيندا آهيو، ان کي ساڳئي ٿريڊ تي سڏيو ويندو آهي ۽ ڪو نئون ٿريڊ شروع نه ڪيو ويندو، اهو ئي ٿيندو جڏهن توهان start() طريقي کي سڏيندا آهيو.
  11. Runnable ۽ Callable جي وچ ۾ فرق؟

  12. ٻئي انٽرفيس انهن ڪمن جي نمائندگي ڪن ٿا جيڪي الڳ الڳ موضوعن ۾ انجام ڏيڻ جو ارادو رکن ٿا. رننبل JDK 1.0 کان وٺي ٿي چڪو آهي، ۽ ڪالبل JDK 1.5 ۾ شامل ڪيو ويو. بنيادي فرق اهو آهي ته Callable's call() طريقو قدر واپس ڪري سگهي ٿو ۽ استثنا ڏئي سگهي ٿو، جيڪو ممڪن ناهي Runnable's run() طريقي سان. Callable هڪ مستقبل جو اعتراض واپس ڪري ٿو جنهن ۾ حساب ڪتاب جو نتيجو شامل ٿي سگھي ٿو.
  13. CyclicBarrier ۽ CountDownLatch جي وچ ۾ فرق؟

  14. جڏهن ته اهي ٻئي هم وقت ساز ٿريڊن کي هڪ ٻئي جو انتظار ڪرڻ جي اجازت ڏين ٿا، انهن جي وچ ۾ بنيادي فرق اهو آهي ته توهان CountDownLatch کي ٻيهر استعمال نه ٿا ڪري سگهو ان کان پوءِ ان جي ڪائونٽر صفر تائين پهچي وڃي، پر توهان ٻيهر استعمال ڪري سگهو ٿا CyclicBarrier کي به رڪاوٽ ٽوڙڻ کان پوءِ.
  15. جاوا ميموري ماڊل ڇا آهي؟

  16. هڪ ميموري ماڊل قاعدن ۽ هدايتن جو هڪ سيٽ آهي جيڪو جاوا پروگرامن کي اجازت ڏئي ٿو ته ڪيترن ئي ميموري، پروسيسر، ۽ آپريٽنگ سسٽم آرڪيٽيڪچرز ۾ مقرري طور تي هلائڻ لاء. اهو خاص طور تي ملٽي فليمينٽ جي صورت ۾ اهم آهي. ميموري ماڊل ضمانت ڏئي ٿو ته هڪ ٿريڊ پاران ڪيل تبديليون ٻين کي نظر اينديون، انهن مان هڪ آهي ٿيڻ کان اڳ جو تعلق. اهو تعلق ڪيترن ئي قاعدن جي وضاحت ڪري ٿو جيڪي پروگرامرز کي متوازي پروگرامن جي رويي جي توقع ۽ تعين ڪرڻ جي اجازت ڏين ٿا. مثال طور ٿئي ٿو- ضمانت کان اڳ:
    • ٿريڊ ۾ هر عمل ان سلسلي جي هر عمل کان اڳ ٿئي ٿو جيڪو پروگرام آرڊر ۾ هلندو آهي، جنهن کي پروگرام آرڊر قاعدو پڻ چيو ويندو آهي.
    • مانيٽر کي ان لاڪ ڪرڻ ساڳئي مانيٽر جي هر ايندڙ لاڪ کان اڳ ٿئي ٿو، جنهن کي مانيٽر لاڪ قاعدو پڻ سڏيو وڃي ٿو.
    • هڪ volatile فيلڊ ڏانهن لکڻ ان فيلڊ جي هر ايندڙ پڙهڻ کان اڳ ٿئي ٿو، هڪ volatile variable قاعدو.
    • Thread.start() کي ڪال ڪنهن به ٿريڊ جي اطلاع کان اڳ ٿيندي آهي، يا ته Thread.join() ڪامياب ٿيڻ کان پوءِ، يا Thread.isAlive() غلط موٽڻ کان پوءِ، Thread.start() قاعدو. .
    • ٻي ٿريڊ جي وچ ۾ هڪ ٿريڊ ان کان اڳ ٿئي ٿو جيڪو وقفي واري ٿريڊ کي مداخلت جو نوٽيس وٺي (يا ته هڪ InterruptedException اڇلائڻ کان يا isInterrupted()) جي چڪاس ڪرڻ کان، ٿريڊ جي مداخلت جو ضابطو.
    • ڪنهن شئي جي ڪنسٽرڪٽر جي پڇاڙي ان شئي لاءِ فائنلائزر جي شروعات کان اڳ ٿيندي آهي، فائنلائزر قاعدو.
    • جيڪڏهن A ٿئي ٿو B کان اڳ، ۽ B ٿئي ٿو C کان اڳ، پوءِ A ٿئي ٿو C کان اڳ، جنهن جو مطلب آهي ٿئي ٿو- اڳ ۾ منتقلي جي ضمانت ڏئي ٿي.
  17. هڪ volatile variable ڇا آهي؟

  18. وولٽائل هڪ خاص ترميم ڪندڙ آهي جيڪو صرف خاصيتن تي لاڳو ڪري سگهجي ٿو. متوازي جاوا پروگرامن ۾، خاصيتن تي مختلف موضوعن پاران ڪيل تبديليون ٻين کي ڏسڻ ۾ نه اينديون آهن هڪ هم وقت سازي جي غير موجودگي ۾. A Volatile variable انهي ڳالهه کي يقيني بڻائي ٿو ته لکڻ پڙهڻ کان اڳ ٿئي ٿي، جيئن اڳئين سوال ۾ Volatile variable قاعدي ۾ بيان ڪيو ويو آهي.
  19. موضوع جي حفاظت ڇا آهي؟ ڇا ویکٹر ڪلاس محفوظ آهي؟

  20. سلسلي جي حفاظت هڪ اعتراض يا ڪوڊ جي ملڪيت آهي جيڪا يقيني بڻائي ٿي ته جڏهن ڪيترن ئي موضوعن تي عملدرآمد يا استعمال ڪيو ويندو، ڪوڊ استعمال ڪيو ويندو جيئن ارادو ڪيو وڃي. مثال طور، هڪ ٿريڊ-سيف ڪائونٽر ڪنهن به ڳڻپ کي نه ڇڏيندو جيڪڏهن ساڳيو ڪائونٽر مثال ڪيترن ئي موضوعن ۾ استعمال ڪيو وڃي. ظاهر آهي، مجموعي طبقن کي ٻن ڀاڱن ۾ ورهائي سگهجي ٿو، موضوع-محفوظ ۽ غير ڌاڳو-محفوظ. ویکٹر ٿريڊ-محفوظ آهي ۽ اهو حاصل ڪري ٿو هم وقت سازي جي طريقن سان جيڪو ویکٹر جي حالت کي تبديل ڪري ٿو، ٻئي طرف ان جو هم منصب ArrayList موضوع-محفوظ ناهي.
  21. نسل جي حالت ڇا آهي؟

  22. نسل جون حالتون ذيلي ڪيڙن جو سبب آهن. جيئن ته نالو پاڻ چوي ٿو، هڪ نسل جي حالت ڪيترن ئي موضوعن جي وچ ۾ هڪ نسل جي ڪري ٿئي ٿي؛ جيڪڏهن اهو سلسلو جيڪو عمل ڪرڻ گهرجي، پهرين ريس کي وڃائي ٿو ۽ ٻيو هڪ عمل ڪيو وڃي ٿو، ڪوڊ جي رويي کي تبديل ڪري ٿو، غير مقرراتي ڪيچ سبب. اهي ڪجهه سخت ڪيڙا آهن جن کي پڪڙڻ ۽ ٻيهر پيدا ڪرڻ لاءِ ٿريڊن جي وچ ۾ نسلن جي گندي فطرت جي ڪري. نسل جي حالت جو هڪ مثال غلط عمل آهي.
  23. موضوع کي ڪيئن روڪيو؟

  24. مون هميشه چيو آهي ته جاوا هر شيءِ لاءِ امير APIs مهيا ڪري ٿو، پر ستم ظريفي طور تي ٿريڊ کي روڪڻ لاءِ آسان طريقا مهيا نٿو ڪري. JDK 1.0 وٽ ڪيترائي ڪنٽرول طريقا هئا، جهڙوڪ stop()، suspend()، ۽ resume()، جن کي مستقبل جي رليز ۾ خارج ٿيل قرار ڏنو ويو آهي ڇاڪاڻ ته امڪاني تعطل جي خطرن جي ڪري؛ ان وقت کان وٺي، جاوا API ڊولپرز ٿريڊ مهيا ڪرڻ جي ڪا به ڪوشش نه ڪئي آهي. -مزاحمتي -سلسلن کي روڪڻ لاءِ محفوظ ۽ خوبصورت طريقو. پروگرامر گهڻو ڪري ان حقيقت تي ڀروسو ڪندا آهن ته ٿريڊ پاڻ کي بند ڪري ڇڏيندو آهي جيئن ئي اهو رن () يا ڪال () طريقن تي عمل ڪرڻ ختم ڪري ٿو. دستي طور تي بند ڪرڻ لاءِ، پروگرامر volatile boolean variable جو فائدو وٺن ٿا ۽ ان جي قيمت کي چيڪ ڪن ٿا ھر iteration ۾ جيڪڏھن رن () طريقي ۾ لوپ آھن، يا interrupt() طريقي سان ٿريڊز کي اوچتو نوڪريون منسوخ ڪرڻ لاءِ.
  25. ڇا ٿيندو جڏهن هڪ موضوع هڪ استثنا اڇلائي ٿو؟

  26. هي انهن سٺي چال سوالن مان هڪ آهي. سادي لفظن ۾، جيڪڏهن استثنا نه پڪڙيو ويو آهي، موضوع مري ويو آهي؛ جيڪڏهن اڻڄاتل استثناء لاء هينڊلر نصب ٿيل آهي، اهو هڪ ڪال بڪ وصول ڪندو. Thread.UncaughtExceptionHandler ھڪ انٽرفيس آھي جنھن کي ھينڊلرن لاءِ ھڪ نسٽڊ انٽرفيس جي طور تي بيان ڪيو ويو آھي جنھن کي سڏيو ويندو آھي جڏھن ڪو ٿريڊ اوچتو اڻ ڄاتل استثنا جي ڪري بند ٿي ويندو آھي. جڏهن هڪ ٿريڊ اڻڄاتل استثنا جي ڪري مرڻ وارو آهي، JVM Thread.getUncaughtExceptionHandler() استعمال ڪندي UncaughtExceptionHandler جي موجودگي جي جانچ ڪندو ۽ هينڊلر جي uncaughtException() طريقي کي سڏيندو، ٿريڊ ۽ استثنا کي دليلن جي طور تي پاس ڪندي.
  27. ٻن موضوعن جي وچ ۾ ڊيٽا ڪيئن حصيداري ڪجي؟

  28. توھان ھڪڙي شيئر ڪيل شئي يا متوازي ڊيٽا ڍانچو استعمال ڪندي ٿريڊن جي وچ ۾ ڊيٽا شيئر ڪري سگھو ٿا جھڙوڪ BlockingQueue.
  29. مطلع ۽ سڀني کي اطلاع ڏيڻ جي وچ ۾ فرق؟

  30. اهو هڪ ٻيو مشڪل سوال آهي، ڇاڪاڻ ته هڪ مانيٽر ڪيترن ئي موضوعن جي نگراني ڪري سگهجي ٿو، جاوا API ڊولپرز هڪ طريقو مهيا ڪن ٿا ته صرف هڪ يا سڀني موضوعن کي ان جي حالت ۾ تبديلي جي مطلع ڪرڻ لاء، پر اهي صرف اڌ عملدرآمد مهيا ڪن ٿا. نوٽيفڪيشن () طريقي سان مخصوص ٿريڊ کي چونڊڻ جو ڪو طريقو ناهي، تنهنڪري اهو صرف تڏهن مفيد آهي جڏهن توهان پڪ ڄاڻو ته صرف هڪ ٿريڊ انتظار ڪري رهيو آهي. ٻئي طرف، notifyAll() سڀني موضوعن کي مطلع ڪري ٿو ۽ انهن کي مانيٽر لاء مقابلو ڪرڻ جي اجازت ڏئي ٿو، جيڪا يقيني بڻائي ٿي ته گهٽ ۾ گهٽ هڪ موضوع اڳتي وڌندو آهي.
  31. ڇو انتظار ڪريو، نوٽيفڪيشن ۽ اطلاع ڏيو سڀ ٿريڊ ڪلاس ۾ نه آھن؟

  32. اهو هڪ ڊزائن جو سوال آهي جيڪو جانچ ڪري ٿو ته اميدوار موجوده سسٽم بابت ڇا سوچي ٿو يا ڇا انهن ڪڏهن به اهڙي شيءِ بابت سوچيو آهي جيڪو پهرين جڳهه کان ٻاهر نظر اچي ٿو. هن سوال جو جواب ڏيڻ لاء، توهان کي ڪيترائي سبب مهيا ڪرڻ جي ضرورت آهي ڇو ته اهي طريقا Object ڪلاس ۾ بهتر طور تي لاڳو ڪيا ويا آهن، ۽ ڇو نه Thread ڪلاس ۾. پهريون واضع سبب اهو آهي ته جاوا لاڪ کي سپورٽ ڪري ٿو اعتراض جي سطح تي، نه ته موضوع جي سطح تي. ڪنهن به شئي کي هڪ تالا هوندو آهي، جيڪو هڪ ڌاڳو حاصل ڪري وٺندو آهي. ۽ جيڪڏهن ڪنهن ٿريڊ کي ڪنهن خاص تالا جو انتظار ڪرڻ جي ضرورت آهي، ته ان سلسلي جي ڀيٽ ۾ ڪنهن شئي تي wait() کي ڪال ڪرڻ وڌيڪ سمجهه ۾ اچي ٿو. جيڪڏهن انتظار () کي ٿريڊ ڪلاس ۾ قرار ڏنو ويو ته، اهو واضح نه ٿيندو ته ٿريڊ ڪهڙي لاڪ تي انتظار ڪري رهيو هو. مختصر ۾، جيئن ته انتظار ڪريو، نوٽيفڪيشن ۽ نوٽيفڪيشن سڀ لاڪ ليول تي هلن ٿا، ان ڪري انهن کي Object ڪلاس ۾ بيان ڪرڻ وڌيڪ آسان آهي ڇو ته lock هڪ اعتراض ڏانهن اشارو ڪري ٿو.
  33. ThreadLocal variable ڇا آهي؟

  34. ThreadLocal variables هڪ خاص قسم جا متغير آهن جيڪي جاوا پروگرامر وٽ موجود آهن. جيئن رياستن وٽ رياستي متغير هوندو آهي، تيئن ٿريڊن ۾ ThreadLocal variables هوندا آهن. هي هڪ سٺو طريقو آهي ٿريڊ-حفاظت حاصل ڪرڻ لاءِ قيمتي شيون ٺاهڻ لاءِ؛ مثال طور، توهان ڪري سگهو ٿا SimpleDateFormat موضوع-محفوظ ThreadLocal استعمال ڪندي. جيئن ته هي هڪ قيمتي طبقو آهي، ان کي مقامي دائري ۾ استعمال ڪرڻ جي صلاح نه آهي جيڪا هر ڪال لاء الڳ مثالن جي ضرورت آهي. هر هڪ ڌاڳي کي پنهنجي ڪاپي ڏئي، توهان هڪ پٿر سان ٻه پکي ماريندا آهيو. پهرين، توهان هڪ نئين مقرر ٿيل مثالن کي استعمال ڪندي قيمتي شين جي مثالن جو تعداد گھٽائي سگهو ٿا، ۽ ٻيو، توهان هم وقت سازي ۽ بي ترتيبگي کي وڃائڻ کان سواء ٿريڊ جي حفاظت حاصل ڪريو. ٿريڊ-مقامي متغير جو ٻيو سٺو مثال ThreadLocalRandom طبقو آهي، جيڪو هڪ گھڻن موضوعن واري ماحول ۾ قيمتي-ڪرڻ واري random شين جي مثالن جو تعداد گھٽائي ٿو.
  35. FutureTask ڇا آهي؟

  36. FutureTask هڪ متوازي جاوا ايپليڪيشن ۾ هڪ منسوخي قابل هم وقت سازي آهي. هي طبقو هڪ بنيادي مستقبل تي عملدرآمد مهيا ڪري ٿو، حساب ڪتاب کي شروع ڪرڻ ۽ بند ڪرڻ جا طريقا، حساب جي حالت بابت سوال ڪرڻ جا طريقا، ۽ نتيجا حاصل ڪرڻ. نتيجو صرف تڏهن حاصل ڪري سگهجي ٿو جڏهن حساب ڪتاب مڪمل ٿئي ٿو؛ حاصل ڪرڻ وارو طريقو بند ٿي ويندو جيڪڏهن حساب ڪتاب اڃا مڪمل نه ٿيو آهي. FutureTask شيون استعمال ڪري سگھجن ٿيون Callable ۽ Runnable شيون لفافي ڪرڻ لاءِ. جيئن ته FutureTask Runnable کي لاڳو ڪري ٿو، ان کي عمل لاءِ ايگزيڪيوٽر ڏانهن منتقل ڪري سگھجي ٿو.
  37. مداخلت ۽ مداخلت جي وچ ۾ فرق؟

  38. interrupted() ۽ isInterrupted() جي وچ ۾ بنيادي فرق اهو آهي ته اڳوڻو مداخلت واري صورتحال کي ري سيٽ ڪري ٿو جڏهن ته بعد ۾ نه. جاوا ۾ مداخلت واري ميڪانيزم کي اندروني پرچم استعمال ڪندي لاڳو ڪيو ويو آهي جيڪو مداخلت جي حيثيت سان سڃاتو وڃي ٿو. Thread.interrupt() کي ڪال ڪندي هڪ سلسلي ۾ مداخلت ڪرڻ هن پرچم کي سيٽ ڪري ٿو. جڏهن هڪ مداخلت واري سلسلي کي static Thread.interrupted() طريقي سان ڪال ڪندي مداخلت واري صورتحال کي چيڪ ڪري ٿو، مداخلت واري صورتحال ري سيٽ ڪئي وئي آهي. غير جامد isInterrupted() طريقو، جيڪو هڪ ٿريڊ طرفان استعمال ڪيو ويندو آهي ڪنهن ٻئي سلسلي جي مداخلت واري صورتحال کي جانچڻ لاءِ، مداخلت واري پرچم کي تبديل نٿو ڪري. روايتي طور تي، ڪو به طريقو جيڪو ختم ڪري ٿو هڪ InterruptedException اڇلائي مداخلت واري پرچم کي ري سيٽ ڪري ٿو. بهرحال، اتي هميشه اهو امڪان آهي ته پرچم کي فوري طور تي ٻيهر سيٽ ڪيو ويندو جيڪڏهن ٻي سلسلي کي مداخلت ().
  39. هم وقت سازي واري بلاڪ ۾ انتظار ۽ اطلاع جي طريقن کي ڇو سڏيو وڃي ٿو؟

  40. انتظار کي ڪال ڪرڻ جو بنيادي سبب هڪ جامد بلاڪ يا طريقي سان اطلاع آهي ته جاوا API ان جي ضرورت آهي. جيڪڏهن توهان انهن کي هڪ هم وقت ساز بلاڪ کان ٻاهر سڏيندا آهيو، توهان جو ڪوڊ اڇلائي ڇڏيندو هڪ غير قانوني مانيٽر اسٽيٽ ايڪسپشن. ھڪڙو وڌيڪ ھوشيار سبب آھي انتظار ۽ اطلاع ڪالن جي وچ ۾ ھڪڙي نسل جي حالت کان بچڻ لاء.
  41. توهان کي انتظار جي حالت کي لوپ ۾ ڇو چيڪ ڪرڻ گهرجي؟

  42. امڪان اهو آهي ته هڪ انتظار واري سلسلي کي غلط ڊيڄاريندڙ ۽ غلط جاڳ اپ ڪالون ملنديون آهن جيڪڏهن اهو لوپ ۾ انتظار جي حالت کي نه چيڪ ڪري، اهو صرف ٻاهر نڪري ويندو جيتوڻيڪ رياست پهچي نه وڃي. جڏهن انتظار جو سلسلو اڀري ٿو، اهو ان حقيقت جي باري ۾ نه ٿو سوچي ته اها حالت اڃا تائين اثر انداز ٿي سگهي ٿي. اهو اصل ۾ ماضي ۾ ٿي سگهي ٿو، پر پوء تبديل ڪيو ويو بعد ۾ نوٽيفڪيشن () طريقو سڏيو ويو ۽ ان کان اڳ جو موضوع جاڳيو. تنهن ڪري، اهو هميشه بهتر آهي انتظار () کي لوپ جي اندر کان سڏڻ.
  43. هم وقت سازي ۽ سمورو مجموعن جي وچ ۾ فرق؟

  44. جڏهن ته هم وقت سازي ۽ هم وقتي مجموعا ٿريڊ-محفوظ مجموعا مهيا ڪن ٿا، بعد ۾ وڌيڪ اسپيبلبل آهي. جاوا 1.5 کان اڳ، پروگرامرز کي صرف هم وقت سازي ڪيل مجموعن تائين رسائي هوندي هئي، جيڪو تڪرار جو هڪ ذريعو بڻجي ويو جڏهن ڪيترن ئي موضوعن انهن کي هڪ ئي وقت تائين پهچايو، ان کي سسٽم کي ماپڻ ڏکيو بڻائي ڇڏيو. Java 5 متعارف ڪرايو سمورو مجموعو جهڙوڪ ConcurrentHashMap، جيڪي نه صرف ٿريڊ جي حفاظت فراهم ڪن ٿا پر جديد ٽيڪنالاجي استعمال ڪندي اسڪيبليٽي کي به بهتر ڪن ٿا جهڙوڪ لاک اسٽريپنگ ۽ اندروني ٽيبل ورهاڱي.
  45. اسٽيڪ ۽ هيپ جي وچ ۾ فرق؟

  46. ملٽي ٿريڊنگ بابت سوالن ۾ هي سوال ڇو موجود آهي؟ ڇاڪاڻ ته اسٽيڪ ياداشت جو هڪ ٽڪرو آهي جيڪو ويجهي سان لاڳاپيل موضوعن سان لاڳاپيل آهي. هر سلسلي جو پنهنجو اسٽيڪ هوندو آهي، جيڪو مقامي متغير، طريقو پيٽرولر، ۽ ڪال اسٽيڪ کي محفوظ ڪري ٿو. ھڪڙي ٿريڊ جي اسٽيڪ تي ذخيرو ٿيل متغير ٻئي کي نظر نٿو اچي. ٻئي طرف، هيپ ياداشت جو هڪ عام علائقو آهي جيڪو سڀني موضوعن جي وچ ۾ ورهايل آهي. شيون، ڇا مقامي يا ڪنهن ٻئي سطح تي، ڍير تي ٺهيل آهن. ڪارڪردگي کي بهتر ڪرڻ لاء، هڪ ڌاڳو عام طور تي هن جي اسٽيڪ تي ڍير مان قدرن کي ڪيش ڪندو آهي، جتي اهو آهي جتي غير مستحڪم متغير راند ۾ اچن ٿا. Volatile threads کي ٻڌائي ٿو ته مکيه ميموري مان هڪ متغير پڙهڻ.
  47. ٿريڊ پول ڇا آهي؟

  48. هڪ موضوع ٺاهڻ وقت ۽ وسيلن جي لحاظ کان قيمتي آهي. جيڪڏهن توهان هڪ سلسلي ٺاهي رهيا آهيو جڏهن هڪ درخواست پروسيسنگ ٿي رهي آهي، اهو جوابي وقت کي سست ڪندو، ۽ اهو عمل صرف محدود تعداد ۾ موضوع ٺاهي سگهي ٿو. انهن مسئلن کان بچڻ لاءِ، ايپليڪيشن جي شروعات تي ٿريڊز جو هڪ پول ٺاهيو ويندو آهي ۽ ٿريڊس کي ٻيهر استعمال ڪيو ويندو آهي درخواستن تي عمل ڪرڻ لاءِ. ڌاڙن جي هن تلاءَ کي ”ٿريڊ پول“ چئبو آهي ۽ ان ۾ موجود ڌاڙن کي ڪم ڪندڙ ڌاڳو چئبو آهي. جاوا 1.5 سان شروع ڪندي، Java API مهيا ڪري ٿو Executor فريم ورڪ، جيڪو توهان کي اجازت ڏئي ٿو مختلف ٿريڊ پول ٺاهڻ، جهڙوڪ هڪ واحد ٿريڊ پول، جيڪو پروسيس ڪري ٿو صرف هڪ نوڪري في يونٽ وقت، هڪ مقرر ٿيل ٿريڊ پول، هڪ مقرر نمبر سان پول ٿريڊز جو، ۽ هڪ ڪيش ٿيل ٿريڊ پول، هڪ وڌائڻ لائق تلاءُ. ڪيترن ئي مختصر مدت جي ڪمن سان گڏ ايپليڪيشنن لاءِ موزون.
  49. پروڊيوسر جي صارفين جي مسئلي کي ڪيئن حل ڪجي؟

  50. ٿريڊ جا گھڻا مسئلا جيڪي توھان حل ڪندا آھيو حقيقت ۾ پروڊيوسر ڪنزيومر نموني جا آھن، جنھن ۾ ھڪڙو ٿريڊ مسئلو پيدا ڪري ٿو ۽ ٻيو ان کي استعمال ڪري ٿو. توهان کي ڄاڻڻ جي ضرورت آهي ته هن مسئلي کي حل ڪرڻ لاء اندروني ڌاڳو رابطي کي ڪيئن ٺاهيو. گھٽ سطح تي توھان فائدو وٺي سگھو ٿا انتظار ۽ اطلاعن جي طريقن جو، ۽ اعليٰ سطح تي توھان فائدو وٺي سگھو ٿا Semaphore يا BlockingQueue
  51. تعطل کان ڪيئن بچجي؟

  52. ترجمو: موضوع جي لحاظ کان مٿي 50 انٽرويو سوال.  حصو 1. - 1 Deadlock هڪ اهڙي حالت آهي جنهن ۾ هڪ ڌاڳو ڪنهن عمل کي انجام ڏيڻ لاءِ ٻئي سلسلي جو انتظار ڪري رهيو آهي، ۽ ٻيو، ساڳئي وقت، پهرين کان ساڳيو ئي انتظار ڪري رهيو آهي. اهو هڪ تمام سنگين مسئلو آهي جيڪو توهان جي پروگرام کي منجمد ڪرڻ جو سبب بڻائيندو آهي ۽ اهو نه ڪرڻ جي لاءِ ٺاهيو ويو آهي. Deadlock ٿئي ٿو جڏهن اهي 4 رياستون پهچي وڃن ٿيون:
    • باهمي خارج ڪرڻ: گهٽ ۾ گهٽ هڪ وسيلو لازمي طور تي ناقابل تقسيم موڊ ۾ قبضو ڪيو وڃي. صرف هڪ عمل ڪنهن به وقت هڪ وسيلن کي استعمال ڪري سگهي ٿو.
    • رکو ۽ انتظار ڪريو: ھڪڙو عمل گھٽ ۾ گھٽ ھڪڙو وسيلو رکي ٿو ۽ اضافي وسيلن جي درخواست ڪري ٿو جيڪي ٻين عملن پاران منعقد ڪيا ويا آھن.
    • ڪابه اڳ-صفائي: آپريٽنگ سسٽم وسيلن کي ٻيهر تفويض نٿو ڪري جيڪڏهن اهي اڳ ۾ ئي قبضو ڪيا ويا آهن، انهن کي رضاڪارانه طور تي منعقد ٿيڻ واري عمل کي ڏنو وڃي.
    • سائيڪل انتظار: هڪ عمل انتظار ڪري ٿو وسيلن کي ٻئي پروسيس ذريعي جاري ڪيو وڃي، جنهن جي نتيجي ۾ پهرين پروسيس ذريعي وسيلن جي جاري ٿيڻ جو انتظار ڪيو وڃي.
    ڊيڊ لاڪ کان بچڻ جو آسان طريقو اهو آهي ته لوپ ۾ انتظار ڪرڻ کان پاسو ڪيو وڃي؛ اهو حاصل ڪري سگهجي ٿو لاڪ کي حاصل ڪري هڪ خاص ترتيب ۾ ۽ انهن کي ريورس آرڊر ۾ جاري ڪري.
  53. لائيو لاڪ ۽ ڊيڊ لاڪ جي وچ ۾ فرق؟

  54. هڪ لائيو لاڪ هڪ ڊيڊ لاڪ وانگر هوندو آهي، صرف هڪ لائيو لاڪ ۾ ٿريڊن جون حالتون يا ان ۾ شامل عمل مسلسل هڪ ٻئي جي بنياد تي تبديل ٿيندا رهندا آهن. Livelock وسيلن جي کوٽ جو هڪ خاص ڪيس آهي. جانورن جي لاڪ جو هڪ حقيقي مثال اهو آهي جڏهن ٻه ماڻهو هڪ تنگ ڪنڊ ۾ ملن ٿا ۽ هر هڪ، شائستگي جي ڪوشش ڪري، هڪ طرف هليو وڃي ٿو، ۽ پوءِ اهي اڻڄاڻائيءَ سان هڪ پاسي کان ٻئي پاسي هلن ٿا.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION