JavaRush /جاوا بلاگ /Random-UR /لیول 25۔ لیول کے موضوع پر انٹرویو کے سوالات کے جوابات
zor07
سطح
Санкт-Петербург

لیول 25۔ لیول کے موضوع پر انٹرویو کے سوالات کے جوابات

گروپ میں شائع ہوا۔
لیول 25۔ لیول - 1 کے موضوع پر انٹرویو کے سوالات کے جوابات
  1. اعتراض کی تمام حالتیں کیا ہیں Thread؟

    • نئی
    • چلانے کے قابل
    • مسدود
    • انتظار کر رہا ہے۔
    • TIMED_WAITING
    • ختم کر دیا گیا
  2. بلاک میں داخل ہونے پر تھریڈ کن ریاستوں میں جا سکتا ہے synchronized؟

    • چلانے کے قابل
    • مسدود

    RUNNABLE میں، اگر نشان زد کوڈ کے بلاک پر synchronizedکسی اور تھریڈ کا قبضہ نہیں ہے۔ بصورت دیگر، ہمارا تھریڈ بلاک شدہ حالت حاصل کرے گا اور mutex آبجیکٹ کے جاری ہونے کا انتظار کرے گا۔

  3. طریقہ کو کال کرتے وقت تھریڈ کس حالت میں جائے گا wait()؟

    اس طریقہ کو کال کرنے سے تھریڈ کو انتظار کی حالت میں رکھا جاتا ہے۔
    طریقہ کو wait()صرف ایک mutex آبجیکٹ کے بلاک کے اندر ہی بلایا جا سکتا ہے synchronizedجسے موجودہ تھریڈ کے ذریعے "لاک" کر دیا گیا ہے، بصورت دیگر یہ طریقہ ایک IllegalMonitorStateException استثناء پھینک دے گا ۔

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait();}

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

  4. طریقہ کو کال کرتے وقت تھریڈ کس حالت میں جائے گا wait(500)؟

    اس طریقہ کو کال کرنا تھریڈ کو TIMED_WAITING حالت میں رکھتا ہے۔
    طریقہ کے ساتھ مشابہت کے ساتھ wait()، wait(timeout)اسے صرف ایک mutex آبجیکٹ پر موجود بلاک کے اندر بلایا جا سکتا ہے synchronizedجسے موجودہ تھریڈ کے ذریعے "لاک (لاک)" کر دیا گیا ہے۔

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait(500);}

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

    طریقہ کو کال کرتے وقت تھریڈ کس حالت میں جائے گا notify()؟

    Object monitor = getMonitor();
    synchronized(monitor)
    {
     …
     monitor.wait();}

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

  5. طریقہ کو کال کرتے وقت تھریڈ کس حالت میں جائے گا notifyAll()؟

    notifyAll()تمام تھریڈز "رہیں گے"۔ تمام "سلیپنگ" (انتظار) تھریڈز میں سے ایک رن ایبل حالت میں چلا جائے گا، استعمال ہونے والی چیز کا مانیٹر سنبھالے گا اور اپنا کام جاری رکھے گا۔ باقی بلاک شدہ حالت میں ہوں گے۔ جیسے ہی پہلا "جاگنا" تھریڈ مانیٹر کو جاری کرتا ہے، جس کا باقی سب انتظار کر رہے ہیں، اس کی قسمت اگلے تھریڈ میں دہرائی جائے گی (ایک صوابدیدی دھاگہ بلاک شدہ حالت سے چلی جانے والی حالت میں جائے گا)۔ یہ اس وقت تک جاری رہے گا جب تک کہ تمام "بیدار" تھریڈز بلاک شدہ حالت سے باہر نہ نکل جائیں۔

  6. سنکرونائزڈ بلاک میں تین تھریڈز جنہیں wait()mutex آبجیکٹ کہتے ہیں۔ اگر چوتھا تھریڈ کال کرتا ہے تو یہ تھریڈ کس حالت میں جائیں گے notifyAll()؟

    ان میں سے دو بلاک شدہ حالت میں جائیں گے، ایک بھاگنے والی حالت میں

  7. join(500)سے کیسے مختلف ہے wait(500)؟

    اس حقیقت کے باوجود کہ اور موجودہ تھریڈ کو TIMED_WAITING حالت میں منتقل join(500)کرے گا ، ان کے درمیان اہم فرق ہیں: تھریڈ پر بلایا جاتا ہے، جس چیز پر یہ بلاک مطابقت پذیر ہوتا ہے اس پر ایک مطابقت پذیر بلاک کے اندر بلایا جاتا ہے۔ کال کرنے پر، موجودہ تھریڈ اس تھریڈ کے لیے 500 ملی سیکنڈ انتظار کرے گا جس کا طریقہ مکمل کرنے کے لیے بلایا گیا تھا۔ کال کرنے پر، موجودہ دھاگہ مطابقت پذیر آبجیکٹ سے لاک کو چھوڑ دے گا اور 500 ملی سیکنڈ کے لیے سو جائے گا۔ 500 ملی سیکنڈ کے بعد، دونوں صورتوں میں تھریڈز کام کرتے رہیں گے۔wait(500)
    join(500)wait(500)
    join(500)join()
    wait(500)

  8. wait(500)سے کیسے مختلف ہے sleep(500)؟

    sleep(500)ایک دھاگے پر بلایا جاتا ہے، wait(500)جس چیز پر یہ بلاک مطابقت پذیر ہوتا ہے اس پر ایک مطابقت پذیر بلاک کے اندر بلایا جاتا ہے۔
    کال کرنے پر، sleep(500)موجودہ تھریڈ 500 ملی سیکنڈ انتظار کرے گا، پھر اپنا کام جاری رکھے گا۔
    کال کرنے پر، wait(500)موجودہ دھاگہ مطابقت پذیر آبجیکٹ سے لاک کو جاری کر دے گا اور 500 ملی سیکنڈ کے لیے سو جائے گا۔

  9. طریقہ کو کال کرتے وقت تھریڈ کس حالت میں جائے گا yield()؟

    جب ایک طریقہ کہا جاتا ہے yield()، موجودہ تھریڈ "اپنی باری چھوڑ دیتا ہے" اور جاوا فوری طور پر اگلے تھریڈ پر عمل کرنے کے لیے سوئچ کرتا ہے۔ دھاگہ ریاست سے runningریاست تک جاتا ہے ready۔ چلتی اور تیار ریاستیں چلنے والی ریاست کی ذیلی ریاستیں ہیں۔

PS تبصرے، اضافے، اصلاحات، ریمارکس خوش آئند ہیں =)
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION