Introducere Java Interviu Întrebări și Răspunsuri la Multithreading

Înainte de a trece la întrebările de interviu Java pe Multithreading, vom discuta ceva despre unele fapte despre multithreading.

# 1 - Deci ar trebui să știm mai întâi care este firul?

Este cea mai mică unitate de procesare, o anumită lucrare se numește fir. Este o natură ușoară, atât de ușor de utilizat. Acum ne vine în minte că de ce ar trebui să avem nevoie, multithreading este folosit pentru a realiza multitasking. Multitasking-ul ar putea fi realizat într-un alt mod și este cunoscut sub denumirea de Multiprocessing.

Cu toate acestea, multithreading este mai popular și este eficient de utilizat peste multiprocesare, deoarece thread-urile au proprietăți pe care le folosește o zonă de memorie partajată, în timp ce în cazul proceselor multiple consumă multă memorie și alte resurse care nu sunt eficiente.

Deci procesul de execuție a mai multor fire simultan pentru a efectua unele lucrări este denumit ca multithreading.

Câteva avantaje ale utilizării multitreading:

  • Firele funcționează independent, astfel încât este independent de alte operațiuni în sistem și astfel este posibil să efectuați mai multe operații în același timp.
  • Consumul de timp este mai mic odată cu utilizarea multitreading, deoarece multe operațiuni pot fi efectuate simultan.
  • Firele sunt independente așa cum s-a discutat deja, astfel încât o excepție apare într-un singur fir nu va interfera cu operațiunile altor fire.
  • Costul comunicațiilor între două fire este scăzut.

Putem realiza multitasking în următoarele două moduri:

  • Multitasking bazat pe proces (Multiprocessing)
  • Multitasking bazat pe fire (Multithreading)

NOTĂ: Pe măsură ce discutăm multitreading, ne vom concentra asupra multitasking-ului bazat pe fire.

Ciclul de viață al unei fire:

  • Nou
  • runnable
  • Alergare
  • Neexecutare (blocată)
  • încheiată

NOTĂ: Pentru referință și o mai bună înțelegere, parcurgeți cu atenție imaginea de mai jos.

# 2 - Cum sunt create firele?

Acum, acesta este cel mai important și primul punct prin care putem crea firul. Există două modalități prin care se pot crea fire care sunt discutate mai jos:

  • Prin extinderea clasei Thread
  • Prin implementarea interfeței Runnable

NOTĂ:

Când a fost creat un thread nou, se efectuează următoarele sarcini:

  1. Într-un nou stack de apeluri, se va crea un thread.
  2. Firul își schimbă starea de la Nou la Runnable.
  3. Când firul va fi pornit, va găsi metoda run (), apoi va fi executată.

EXEMPLU:

By extending Thread class
class MyThread extends Thread
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread t1=new MyThread ();
t1.start();
)
)

EXEMPLU:
By implementing Runnable interface
class MyThread implements Runnable
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread m1=new MyThread ();
Thread t1 =new Thread(m1);
t1.start();
)
)

NOTĂ: Vă rugăm să rețineți diferența dintre cele două exemple de mai sus. Principala diferență în cele două exemple de mai sus este că dacă nu extindem Thread, mai degrabă încercăm să creăm Thread implementând interfața Runnable și clasificăm metoda start () pentru a porni Thread, atunci Tread nu va fi creat într-un nou stack stack întrucât nu va fi identificat ca atare.

Așadar, pentru a-l identifica ca Thread, trebuie să trecem instanța clasei unde am implementat Interfața Runnable ca un argument pentru constructorul clasei Thread și apoi trebuie să apelăm la metoda start ().

Programare în fire:

După cum știu toți că programul înseamnă să faci un plan o sarcină la un moment dat.

Programarea firelor este un mecanism similar de planificare a unui anumit fir care menține unele protocoale. Există două moduri diferite prin care programarea Thread funcționează în Java.

  • Programare preventivă
  • Slicing Time.

Programare preventivă:

JMV decide cea mai mare prioritate și începe executarea până când intră în stările de așteptare sau moarte sau apare o sarcină cu prioritate mai mare.

Interval de timp:

JVM începe să execute un anumit thread pentru o anumită perioadă de timp și apoi mută același thread în pool și alege alt thread bazat pe prioritate și alți factori pentru execuții. Acest proces continuă până când tot thread-ul își încheie procesul.

Acum, dacă sunteți în căutarea unui loc de muncă care are legătură cu Java Multithreading, atunci trebuie să vă pregătiți pentru întrebările de interviu Java din 2018 despre Multithreading. Este adevărat că fiecare interviu este diferit în funcție de diferitele profiluri de muncă. Aici, am pregătit întrebările și răspunsurile importante pentru interviul Java pe Multithreading, care vă vor ajuta să obțineți succes în interviu.

În acest articol de interviuri Java din 2018 cu privire la multithreading, vom prezenta 10 cele mai importante și frecvente întrebări de interviu Java despre Multithreading. Aceste întrebări de interviu sunt împărțite în două părți:

Partea 1 - Întrebări de interviu Java pe Multithreading (de bază)

Această primă parte acoperă întrebările și răspunsurile de bază ale interviului Java despre Multithreading.

Q1. Diferențiați între proces și fir?

Răspuns:
Un proces este un program sau o aplicație, în timp ce Thread este o singură sarcină care trebuie executată în cadrul unui proces. Firul este ușor, în timp ce procesul este greu. Firul necesită mai puțin, în timp ce Procesul necesită mai multe resurse, astfel încât este denumit la fel de puternic ponderat în natură.

Q2. Diferențiați între firele de utilizator și firele de demon?

Răspuns:
Un thread creat în java este denumit User thread. Un fir de demoni rulează întotdeauna în fundal, iar ciclul său complet de viață depinde de firul principal. Un fir de demoni care rulează în fundal nu va împiedica JVM să îl încheie. Firul copil creat dintr-un fir de demoni va fi, de asemenea, un fir de daemon.

Haideți să trecem la următoarea întrebare de interviu Java pe Multithreading.

Q3. Modul diferit de a crea un thread în Java?

Răspuns:
Firele din Java pot fi create în două moduri:

  • Prin extinderea clasei de thread.
  • Prin implementarea Runnable Interface.

Q4. Care este ciclul de viață al firului?

Răspuns:
Aceasta este întrebările obișnuite de interviu Java pe Multithreading solicitate într-un interviu. Urmează ciclul de viață al unei fire:

  • Nou
  • Runnable.
  • Alergare.
  • Blocat.
  • Încheiată.

Q5. Ce se întâmplă dacă numim metoda run () a unei clase Thread?

Răspuns:
Apelarea directă a metodei run () va compila și executa programul cu succes, dar același program nu va fi tratat ca Thread, deoarece nu se va crea o nouă stivă de apeluri și programul începe executarea sa în aceeași stivă de apeluri în care rulează principalul.

Pentru a crea Thread care ar trebui să fie executat cu un nou stack de apeluri, trebuie să utilizați metoda start () a clasei Thread.

Partea a 2-a - Întrebări de interviu Java pe Multithreading (avansat)

Haideți acum să aruncăm o privire la întrebările avansate de interviu și răspunsuri Java despre multithreading.

Q6. Putem întrerupe execuția unui fir la un moment dat?

Răspuns:
Da, acest lucru poate fi obținut în java apelând la somn () din clasa Thread. Metoda Sleep () ia și un argument care indică timpul în milisecunde.

Q7. Cum putem realiza programarea firului în Java?

Răspuns:
Da, programarea firelor în Java este posibilă. Firele din Java pot fi programate în două moduri, adică Slicing Time și Planificarea preventivă.

Haideți să trecem la următoarea întrebare de interviu Java despre Multithreading.

Q8. Poate fi pornit un fir de două ori?

Răspuns:
Nu, un thread nu poate fi pornit de două ori. Dacă vom încerca să pornim un thread de două ori, va arunca „java.lang.IllegalThreadStateException”.

Q9. Ce este cârligul de închidere în Java?

Răspuns:
Aceasta este cea mai populară întrebare de interviu Java pe Multithreading adresată într-un interviu. Un cârlig de închidere este un mecanism care este utilizat pentru resursele de curățare atunci când JVM se oprește normal sau brusc.

Q10. Ce este volatil?

Răspuns:
Volatile este un cuvânt cheie în java și poate fi utilizat cu variabile. Dacă o variabilă este declarată volatilă, toate thread-urile vor citi valoarea aceleiași variabile din memoria principală, mai degrabă decât din memoria cache, astfel ea împiedică citirea erorilor atunci când mai multe fire folosesc aceeași variabilă în operațiunile lor.

Articole recomandate

Acesta a fost un ghid către lista de întrebări de interviu Java și răspunsuri pe Multithreading, astfel încât candidatul să poată împărți cu ușurință aceste întrebări de interviu Java pe Multithreading. Aici, în această postare, am studiat cele mai bune întrebări de interviu Java despre Multithreading, care sunt adesea puse în interviuri. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Structura de date Întrebări de interviu Java
  2. Oops Întrebări de interviu Java
  3. Întrebări cu interviuri multithreading în Java
  4. Întrebări de interviu Java Testing