JavaRush /Java Blog /Random-TL /Level 25. Mga sagot sa mga tanong sa pakikipanayam sa ant...
zor07
Antas
Санкт-Петербург

Level 25. Mga sagot sa mga tanong sa pakikipanayam sa antas ng paksa

Nai-publish sa grupo
Antas 25. Mga sagot sa mga tanong sa panayam sa paksa ng antas - 1
  1. Ano ang lahat ng mga estado ng bagay Thread?

    • BAGO
    • NAKATAKBO
    • NA-block
    • NAGHIHINTAY
    • TIMED_WAITING
    • WINAWASAN
  2. Anong mga estado ang maaaring mapuntahan ng isang thread kapag pumapasok sa isang bloke synchronized?

    • NAKATAKBO
    • NA-block

    Sa RUNNABLE, kung ang bloke ng code na minarkahan synchronizeday hindi inookupahan ng isa pang thread. Kung hindi, ang aming thread ay makakatanggap ng BLOCKED na estado at maghihintay para sa mutex object na ilabas.

  3. Anong estado ang pupuntahan ng thread kapag tumatawag sa pamamaraan wait()?

    Ang pagtawag sa paraang ito ay naglalagay ng thread sa WAITING state.
    Ang pamamaraan wait()ay maaari lamang tawagan sa loob ng isang bloke synchronizedsa isang mutex na bagay na "naka-lock" ng kasalukuyang thread, kung hindi, ang pamamaraan ay magtapon ng isang IllegalMonitorStateException exception .

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

    Kapag tinawag ang isang paraan wait(), ang kasalukuyang thread ay naglalabas ng lock mula sa bagay monitorat pumapasok sa WAITING state, naghihintay para sa pamamaraan na tawagin monitor.notify()ng monitor.notifyAll()isa pang thread. Sa sandaling mangyari ito, magigising ang thread at kung hindi abala ang monitor, kukunin ito at patuloy na gumagana.
    Kung ang monitor ay inookupahan ng isa pang thread, ang kasalukuyang thread ay mapupunta sa BLOCKED na estado.

  4. Anong estado ang pupuntahan ng thread kapag tumatawag sa pamamaraan wait(500)?

    Ang pagtawag sa paraang ito ay naglalagay ng thread sa TIMED_WAITING na estado.
    Sa pamamagitan ng pagkakatulad sa pamamaraan wait(), wait(timeout)maaari lamang itong tawagan sa loob ng isang bloke synchronizedsa isang bagay na mutex na "naka-lock (naka-lock)" ng kasalukuyang thread.

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

    Kapag tinatawagan ang paraan wait(), inilalabas ng kasalukuyang thread ang lock mula sa bagay monitorat matutulog nang 500 millisecond. Ang bagay monitoray maaaring makuha ng isa pang thread.
    Pagkatapos ng 500 milliseconds, magigising ang thread at kung monitorhindi ito abala, kukunin ito at magpapatuloy sa pagtatrabaho.
    Kung ang monitor ay inookupahan ng isa pang thread, ang kasalukuyang thread ay mapupunta sa BLOCKED na estado.

    Anong estado ang pupuntahan ng thread kapag tumatawag sa pamamaraan notify()?

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

    Pagkatapos ng monitor.wait(), mapupunta ang thread sa WAITING state. Ang isang pamamaraan notify()na tinatawag ng isa pang thread sa isang bagay monitoray maglilipat ng thread mula sa WAITING na estado patungo sa RUNNABLE na estado maliban kung ang monitor object ay nakuha ng isa pang thread, kung hindi ay sa BLOCKED na estado.

  5. Anong estado ang pupuntahan ng thread kapag tumatawag sa pamamaraan notifyAll()?

    notifyAll()"ay mananatili" sa lahat ng mga thread. Isa sa lahat ng "natutulog" (NAGHIHINTAY) na mga thread ay mapupunta sa RUNNABLE na estado, papalitan ang monitor ng bagay na ginagamit at ipagpapatuloy ang gawain nito. Ang natitira ay nasa BLOCKED na estado. Sa sandaling ilabas ng unang "nakakagising" na thread ang monitor, na hinihintay ng lahat, ang kapalaran nito ay uulitin ng susunod na thread (isang di-makatwirang thread ay pupunta mula sa BLOCKED na estado patungo sa RUNNABLE na estado). Ito ay magpapatuloy hanggang ang lahat ng "nagising" na mga thread ay umalis sa BLOCKED na estado.

  6. Tatlong thread sa naka-synchronize na block na tinatawag wait()na mutex object. Sa anong estado mapupunta ang mga thread na ito kung tumawag ang ikaapat na thread notifyAll()?

    Dalawa sa kanila ay mapupunta sa BLOCKED na estado, isa sa RUNNABLE na estado

  7. Paano ito naiiba join(500)sa wait(500)?

    Sa kabila ng katotohanan na at join(500)ililipat wait(500)ang kasalukuyang thread sa TIMED_WAITING na estado, may mga makabuluhang pagkakaiba sa pagitan nila:
    join(500)tinatawag sa isang thread, wait(500)na tinatawag sa loob ng isang naka-synchronize na bloke sa bagay kung saan naka-synchronize ang bloke na ito.
    Kapag tinawag, join(500)ang kasalukuyang thread ay maghihintay ng 500 millisecond para sa thread na ang pamamaraan join()ay tinawag upang makumpleto.
    Kapag tinawag, wait(500)ilalabas ng kasalukuyang thread ang lock mula sa naka-synchronize na bagay at matutulog nang 500 millisecond.
    Pagkatapos ng 500 millisecond, sa parehong mga kaso ay patuloy na gagana ang mga thread.

  8. Paano ito naiiba wait(500)sa sleep(500)?

    sleep(500)tinatawag sa isang thread, wait(500)na tinatawag sa loob ng isang naka-synchronize na bloke sa bagay kung saan naka-synchronize ang bloke na ito.
    Kapag tinawag, sleep(500)ang kasalukuyang thread ay maghihintay ng 500 millisecond, pagkatapos ay ipagpapatuloy ang trabaho nito.
    Kapag tinawag, wait(500)ilalabas ng kasalukuyang thread ang lock mula sa naka-synchronize na bagay at matutulog nang 500 millisecond.

  9. Anong estado ang pupuntahan ng thread kapag tumatawag sa pamamaraan yield()?

    Kapag tinawag ang isang paraan yield(), ang kasalukuyang thread ay "lumalaktaw sa kanyang turn" at ang java ay agad na lumipat sa pagpapatupad ng susunod na thread. Ang thread ay napupunta mula sa estado runningpatungo sa estado ready. Ang tumatakbo at handa na estado ay mga substate ng RUNNABLE na estado.

PS Ang mga komento, pagdaragdag, pagwawasto, komento ay malugod na tinatanggap =)
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION