Introducere în interviuri și răspunsuri Java cu mai multe filete

Java este în plină expansiune în aceste zile datorită platformei sale independente. Poate fi rulat oriunde și de aceea este utilizat pe scară largă cu diferite tehnologii viitoare. Pentru a fi pregătit pentru aceasta, multi-threading este un subiect important, care este axat pe interviuri. Deci, în sfârșit, ați găsit jobul dvs. de vis în Java Multi-threading, dar vă întrebați cum să crapați interviul și care ar putea fi probabil Java Multi-threading Intrebari de interviu. Fiecare interviu este diferit și sfera unui loc de muncă este diferită. Permiteți-ne să parcurgem câteva întrebări importante cu interviuri Java cu mai multe filete, care pot fi puse în interviurile Java Multi-threading pe care le-ați urma.

Mai jos găsiți mai multe întrebări și răspunsuri la interviu Java cu mai multe filete

1.Care este filetul în JAVA și cum îl implementați?

Răspuns:
Un thread ajută la facilitarea procesării multiple și a procesării multiple în cadrul unui program. Utilizează procesorul eficient și ajută la îmbunătățirea performanței aplicației. Java permite utilizatorului să folosească mai multe fire simultan. Poate rula în paralel cu alte programe fără întreruperi. Acest lucru ajută la reducerea timpului pentru proces. De exemplu, dacă un program necesită 60 de secunde pentru a fi executat, putem folosi 6 fire care ne vor da rezultatul în 10 secunde.

Java oferă două moduri de a implementa thread într-un program. interfața java.lang.Runnable are o instanță java.lang.A thread care necesită o sarcină de executat printr-o instanță. Clasa Thread implementează deja Runnable, astfel încât un utilizator poate înlocui direct metoda run () prin extinderea clasei Thread sau prin implementarea interfeței Runnable.

2.Când să folosiți Runnable și când să utilizați Thread în Java?

Răspuns:
Java nu acceptă moșteniri multiple ale unei clase, dar permite implementarea mai multor interfețe simultan. Prin urmare, va fi mai bine să implementați Runnable decât să extindeți clasa Thread.

3. Cum diferențiați între un thread și un proces?

Răspuns:
Un thread este un subset al unui proces. Un proces poate avea mai multe fire care rulează pentru el. Firele pot rula orice parte a unui proces. Un proces are propria sa adresă unde este stocat, în timp ce thread-ul partajează adresa procesului care l-a creat. Crearea unui proces este un proces agitat, în timp ce firele pot fi create cu ușurință. Un fir este de obicei denumit un proces ușor. Comunicarea interproces este dificilă, în timp ce firele pot comunica cu ușurință folosind metodele Java de aștepta () și de a notifica (). Procesele sunt independente, prin urmare, orice modificare adusă procesului nu afectează procesele copilului. Dimpotrivă, dacă se fac modificări într-un thread, există posibilitatea ca alte fire să fie afectate.

4. De ce se spune că comportamentul firelor este imprevizibil?

Răspuns:
Motivul pentru aceasta este planificatorul de thread care gestionează execuția firelor. Planificatorul poate avea performanțe diferite pe diferite platforme Windows, UNIX, LINUX, etc. În timp ce executați același thread poate da rezultate diferite pe platforme diferite și uneori chiar pe aceeași platformă. Pentru a rezolva acest lucru, un utilizator poate crea același obiect Runnable, crea bucle run () în ambele fire și poate începe ambele fire împreună. În mod ideal, programatorul ar trebui să aleagă ambele fire împreună și performanța nu ar trebui să fie afectată, dar ambele fire vor intra în bucle în mod anonim.

5. Care este o variabilă volatilă în Java și care este semnificația acesteia?

Răspuns:
Java facilitează utilizatorului să partajeze variabile prezente în diferite fire. O variabilă volatilă acționează ca un modificator special care poate fi utilizat doar pentru variabile de exemplu. Deoarece această variabilă este partajată, vor exista schimbări consistente cu ea. Firul trebuie să se asigure că are acces exclusiv la aceste variabile și că un blocaj este obligat pentru excluderea reciprocă a variabilelor partajate. Se asigură că o scriere se va întâmpla înainte de orice citire în consecință. Modelul de memorie Java asigură coerența acestei variabile. Metodele volatile nu pot exista, deoarece pot fi utilizate doar sub formă de variabile.

6. La ce folosește cuvântul cheie sincronizat? Care este diferența dintre cuvintele cheie sincronizate și cele volatile?

Răspuns:
Cuvântul cheie sincronizat este utilizat atunci când scopul este de a rula doar un fir la un moment dat într-o secțiune corespunzătoare de cod. Poate fi utilizat pentru a afișa patru tipuri de blocuri diferite, ca mai jos:

1) Metode de instanță
2) Metode statice
3) Blocuri de cod în cadrul metodelor de instanță
4) Blocuri de cod în cadrul metodelor statice

Poate fi declarat ca:

Exemplu public gol sincronizat () ()

Diferența dintre cuvântul cheie volatil și sincronizat este că sincronizarea poate fi utilizată cu variabile și metode, în timp ce volatile nu pot fi utilizate cu metode. Variabilele volatile nu sunt stocate în memoria cache, variabilele sincronizate sunt stocate în memoria cache. O variabilă volatilă nu va ajunge niciodată în impas, deoarece nu necesită obținerea vreunei blocări. În timp ce se află în variabile sincronizate, dacă acestea nu sunt realizate corect, atunci poate ajunge într-un impas.

7. De ce metode precum wait (), notificare () și notificare tuturor () sunt prezente în clasa obiect și nu în clasa Thread?

Răspuns:
Clasa de obiecte are monitoare care permit blocarea thread-ului unui obiect, în timp ce Thread nu are monitoare. Când se apelează oricare dintre metodele de mai sus, așteaptă un alt thread pentru a elibera obiectul și notifică monitorul prin apelarea notificării () sau notificarea tuturor (). Atunci când se numește metoda notificării (), aceasta are sarcina de a notifica toate firele care așteaptă să fie lansat. Monitorul clasei de obiecte verifică obiectul dacă este disponibil sau nu. Clasa de fire care are aceste metode nu ar ajuta deoarece mai multe fire există pe un obiect și nu invers.

8. Explicați diferența dintre metodele de somn () și de așteptare ().

Răspuns:
1) metoda de somn () se numește pe fire și nu pe obiecte. Metoda Wait () este apelată la obiecte.
2) Când se numește metoda wait (), apoi monitorul mută firul de la rulare la starea de așteptare. Odată ce un thread este în așteptare (), atunci poate trece la runnable numai atunci când are notificare () sau notificationall () pentru acel obiect. Planificatorul schimbă starea după aceasta. În timp ce se află în metoda sleep (), starea este schimbată pentru a aștepta și va reveni la rulare numai după terminarea timpului de somn.
3) Metoda Wait () este o parte a clasei java.lang.Object, în timp ce sleep () este o parte a clasei java.lang.Thread.
4) Wait () este întotdeauna folosit cu un bloc sincronizat, deoarece necesită blocarea unui obiect în timp ce sleep () poate fi utilizat din blocul sincronizat din exterior.

9. Cum să forțezi să pornești un thread în Java?

Răspuns:
În Java, multi-citirea nu poate forța să pornească un thread. Doar planificatorul thread poate controla firele și nu sunt expuse la nicio API pentru control.

10. Are firul lăsați blocarea obiectului atunci când sunt apelate metodele wait () și sleep ()?

Răspuns:
Când un fir este în modul de repaus (), acesta nu lasă blocarea și trece la starea de așteptare. Firul așteaptă ca timpul de somn să treacă. Când se folosește metoda wait (), thread-ul lasă blocarea obiectului și trece la starea de așteptare. Odată ce notificarea () este numită din nou trece la starea de funcționare și obține blocarea.

Articol recomandat

Acesta a fost un ghid la Lista întrebărilor și răspunsurilor la interviu Java cu mai multe filetări, astfel încât candidatul să poată împărți cu ușurință aceste întrebări de interviu Java cu mai multe filete. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Întrebări pentru interviu dezvoltator Java - Cum să creezi cele mai bune 7 întrebări
  2. Ghid cuprinzător pentru dezvoltarea aplicațiilor Java (Teorie minunată)
  3. Întrebări și răspunsuri la interviu Maven | Top and Most Întrebat
  4. 10 întrebări de interviu AngularJS avansate pentru experimentați