Top 40 vragen en antwoorden over multithreading-interviews (2025)
Topvragen over Java Multithreading-interviews
Hier zijn Multithreading Interviewvragen interviewvragen en antwoorden voor zowel eerstejaars als ervaren kandidaten om hun droombaan te krijgen.
1) Wat is een draad?
Een Thread is een gelijktijdige uitvoeringseenheid. We kunnen zeggen dat het deel uitmaakt van het proces dat gemakkelijk gelijktijdig met andere delen van het proces kan worden uitgevoerd.
Gratis pdf-download: vragen en antwoorden over multithreading-interviews
2) Wat is multithreading?
multithreading in Java is een proces waarbij twee of meer threads tegelijkertijd worden uitgevoerd om de CPU maximaal te benutten.
Het belangrijkste voordeel is:
- Threads delen dezelfde adresruimte
- Draad blijft lichtgewicht
- De kosten van communicatie tussen threads zijn laag.
3) Wat zijn de statussen die aan de thread zijn gekoppeld?
- Klaar
- Hardlopen
- Het wachten
- Dode staat
4) Bespreek een draadlevenscyclus?
De levenscyclus van een thread is vergelijkbaar met de levenscyclus van processen die in een thread worden uitgevoerd besturingssysteem. Tijdens zijn levenscyclus kan de draad van de ene toestand naar de andere gaan. Het hangt echter af van de bewerking die erop wordt uitgevoerd.
5) Wat zijn de threadstatussen?
Hieronder volgen de verschillende threadstatussen:
Nieuw: Een thread die zojuist is geïnstantieerd, heeft de nieuwe status. Wanneer een start()-methode wordt aangeroepen, krijgt de thread de status gereed. Vervolgens wordt het door de threadplanner naar de uitvoerbare status verplaatst.
- Uitvoerbaar: Een thread die klaar is om te worden uitgevoerd
- running: Een thread die wordt uitgevoerd, is actief.
- Geblokkeerd: Een geblokkeerde thread wacht op een monitorvergrendeling in deze status. Dit kan ook gebeuren wanneer een thread een I/O-bewerking uitvoert en naar de volgende status gaat.
- Aan het wachten: Het is een thread die wacht tot een andere thread de specifieke actie uitvoert.
- Getimed wachten: Het is een thread die wacht tot een andere thread wordt uitgevoerd.
- Beëindigd: Een afgesloten thread heeft deze status.
6) Wat zijn de belangrijkste verschillen tussen Thread en Process?
De draad is een subset van processen. Het proces kan meerdere threads bevatten. Het proces kan op verschillende geheugenruimte worden uitgevoerd, maar alle threads delen dezelfde geheugenruimte.
7) Wat is een impasse?
Deadlock is een situatie waarin een thread wacht op een objectvergrendeling die is verkregen door een andere thread, terwijl de tweede thread ook wacht op een objectvergrendeling die is verkregen door de eerste thread. Omdat beide threads op elkaar wachten, wordt deze toestand deadlock genoemd.
8) Wat is LiveLock?
Livelock treedt op wanneer alle threads zijn geblokkeerd en niet kunnen worden uitgevoerd vanwege de onbeschikbaarheid van de vereiste bronnen en het ontbreken van een niet-geblokkeerde thread.
Livelock kan optreden onder de volgende omstandigheden:
- Wanneer alle threads in een programma worden uitgevoerd op een object zonder parameters. Het programma is live vergrendeld en wordt nooit verwerkt totdat een of meer threads Object.notify () of Object.notifyAll() aanroepen voor de relevante objecten.
- Livelock gebeurt ook wanneer alle threads in een programma vastzitten in oneindige lussen.
9) Wat is een monitor?
- De monitor is een code die slechts door één thread tegelijk kan worden uitgevoerd.
- Als een andere thread tegelijkertijd toegang probeert te krijgen, wordt deze opgeschort totdat de huidige thread de Monitor vrijgeeft.
10) Wat bedoel je met draaduithongering?
In de situatie waarin een thread niet over voldoende CPU beschikt voor de uitvoering ervan, vindt er thread-uithongering plaats.
Het kan echter gebeuren in de volgende scenario's
- Threads met een lage prioriteit krijgen minder CPU in vergelijking met threads met een hoge prioriteit. Een thread met een lagere prioriteit kan het wachten uithongeren om meer CPU-ruimte te krijgen om berekeningen uit te voeren.
- Het kan zijn dat de thread voor onbepaalde tijd wacht op een vergrendeling op de monitor van het object, maar notificatie() kan herhaaldelijk andere threads activeren. In dat geval verhongert ook de draad.
11) Wat is de betekenis van drukke spin bij multi-threading?
Busy-spin is een techniek die gelijktijdige programmeurs gebruiken om een thread onder bepaalde omstandigheden te laten wachten. Dit is heel anders dan traditionele methoden zoals wait() en sleep(), waarbij je de CPU-controle moet opgeven. Deze methode vereist geen verlaten CPU, maar voert gewoon de lege lus uit.
12) Wat is contextwisseling bij multi-threading?
Het is het proces van het opslaan en herstellen van de CPU-status. Dit helpt hervat draaduitvoering vanaf hetzelfde punt op een later tijdstip. Het is een van de essentiële kenmerken voor een multitasking-besturingssysteem en ondersteuning voor de multi-threaded omgeving.
13) Waarom is Thread-gedrag onvoorspelbaar?
We kunnen zeggen dat threadgedrag onvoorspelbaar is, omdat de uitvoering van Threads afhankelijk is van de Thread-planner. Houd er rekening mee dat elke threadplanner een andere implementatie heeft op verschillende platforms zoals Windows, Unix, enz.
14) Hoe kun je de uitvoering van een thread voor een bepaalde tijd pauzeren?
sleep () methode wordt gebruikt om de uitvoering van de thread gedurende een bepaalde tijd te onderbreken. Dit stopt de verwerking van threads echter niet voor een bepaalde tijd. Wanneer de thread echter uit de slaapstand ontwaakt, verandert de status in uitvoerbaar en op basis van threadplanning wordt deze uitgevoerd.
15) Op welke talloze manieren kan een thread in de wachtstatus terechtkomen?
Een thread kan op de volgende manieren in de wachtstatus komen
- Met behulp van de slaap()-methode
- Blokkeren op I/O
- Er is tevergeefs geprobeerd het slot van een object te bemachtigen
- Door de wait()-methode van een object aan te roepen
16) Wat gebeurt er als we een run-methode niet overschrijven?
Wanneer we in Java de start()-methode op een thread aanroepen, roept deze intern de run()-methode aan met een nieuw gemaakte thread. Dus als we de methode run() niet overschrijven, wordt de nieuw gemaakte thread niet aangeroepen en gebeurt er niets.
Voorbeeld:
class MyThread extends Thread { //don't override run() method } public class DontOverrideRun { public static void main(String[] args) { System.out.println("main has started."); MyThread thread1=new MyThread(); thread1.start(); System.out.println("main has ended."); } }
17) Wat is het belangrijkste verschil tussen de methoden Thread.start() en Thread?run()?
De Thread.start()-methode (native methode) van de Thread-klasse voert de Thread.A run()-methode uit in een thread. Dus als we Thread.De run() -methode rechtstreeks aanroepen, wordt deze ook in dezelfde thread uitgevoerd. Het zal dus nooit het doel van het creëren van een nieuwe thread oplossen.
18) Hoe maak je een thread in Java?
Er zijn twee methoden om een thread in Java te maken.
- Eerst door de Runnable-interface te implementeren en er vervolgens een thread-object van te maken.
- De tweede methode is het uitbreiden van de threadklasse.
19) Wat is de betekenis van Threadprioriteit?
Elk onderwerp heeft een prioriteit. Een hogere prioriteit krijgt echter ook voorrang bij de uitvoering. Het hangt echter ook af van de implementatie van Thread Scheduler, die afhankelijk is van het besturingssysteem. Het is mogelijk om de prioriteit van de thread te wijzigen, maar dit geeft geen garantie dat de thread met een hogere prioriteit eerst wordt uitgevoerd.
20) Welke methode join() doet dit?
De methode join() wacht tot een thread doodgaat. Het dwingt alle lopende threads om te stoppen met uitvoeren tot het moment waarop de thread samenkomt om zijn taak te voltooien.
21) Wat is Java Shutdown Hook?
De Java shutdown hook wordt gebruikt om bronnen op te ruimen wanneer JVM wordt afgesloten. Opschonen van bronnen betekent het sluiten van het logbestand, het verzenden van waarschuwingen of iets anders. Shutdown hook moet worden gebruikt om code uit te voeren voordat JVM wordt afgesloten.
22) Wat zijn de twee belangrijkste toepassingen van volatile in Java?
Threads mogen de waarden van variabelen in het lokale geheugen bevatten. Als een variabele als vluchtig is gemarkeerd, moet dezelfde variabele telkens wanneer deze wordt gebruikt, uit het hoofdgeheugen worden gelezen.
Op dezelfde manier moet elke keer dat de variabele wordt geschreven, de waarde in het hoofdgeheugen worden opgeslagen.
23) Hoe kunt u gegevens delen tussen twee threads in Java?
We kunnen gegevens tussen threads verkrijgen door een gedeeld object of gelijktijdig te gebruiken data structuur zoals BlockingQueue. Het implementeert een producent-consument-patroon met behulp van wacht- en notificatiemethoden. Het omvat ook het delen van objecten tussen twee threads.
24) Hoe kunnen meerdere threads tegelijkertijd worden bestuurd?
Meerdere threads kunnen tegelijkertijd worden beheerd als ze in een ThreadGroup-object zijn gemaakt.
25) Wat is een blokkeermethode in Java?
In Java is de blokkeermethode een methode die blokkeert totdat de taak is voltooid. Accepteer bijvoorbeeld de methode () van ServerSocket-blokken tot het moment waarop een client verbinding maakt. Hier verwijst blokkeren naar alles waarvan de controle niet terugkeert naar de beller totdat de taak voorbij is.
26) Wat is het belangrijkste verschil tussen de wacht()- en slaap()-methode?
Wachten() | Slaap() |
Deze methode is gedefinieerd in de Object-klasse | De methode is gedefinieerd in de Thread-klasse |
De methode Wait() geeft de vergrendeling vrij | Deze methode geeft het slot nooit vrij. |
27) Wat is een onveranderlijk object? Hoe kan het helpen bij het schrijven van een gelijktijdige aanvraag?
Elk object kan als onbetwistbaar worden beschouwd als de staat ervan niet verandert nadat het is gebouwd. Onveranderlijke objecten worden gebruikt bij het creëren van eenvoudige, betrouwbare en gelijktijdige applicaties.
Om een object onveranderlijk te maken, is het belangrijk om de klasse en het lid ervan definitief te maken, zodat de status ervan niet verandert zodra objecten eenmaal zijn gemaakt.
28) Vertel me eens het verschil tussen toegeven en slapen?
Wanneer een taak zijn yield()-methode aanroept, keert deze terug naar de gereed-status.
Wanneer een taak zijn methode sleep() aanroept, keert deze terug naar de wachtstatus.
29) Wat is ThreadPool?
ThreadPool is een pool van threads die een vast aantal threads hergebruikt om de specifieke taak uit te voeren.
30) Wat is het gebruik van gesynchroniseerd trefwoord?
Gesynchroniseerd trefwoord kan worden toegepast op de statische of niet-statische methode. Met behulp van Gesynchroniseerd heeft slechts één thread toegang tot gesynchroniseerde methoden. In de situatie waarin er meerdere threads zijn die toegang proberen te krijgen tot dezelfde methode. Op dat moment moeten andere threads wachten op de uitvoeringsthread. Het biedt ook een vergrendeling op het object om een raceconditie te voorkomen.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Wat is een vluchtig zoekwoord?
Een vluchtig trefwoord is een kwalificatie die op een variabele wordt toegepast wanneer deze wordt gedeclareerd. Het vertelt de compiler dat de waarde van de variabele op elk moment kan veranderen, zonder dat de code enige actie onderneemt.
32) Wat zijn de belangrijkste verschillen tussen notificeren en notificerenAll in Java?
De methode Notify () biedt geen enkele manier om een bepaalde thread te kiezen. Daarom is deze alleen nuttig als een enkele While notificatieAll() een melding naar alle threads verzendt. Het stelt hen ook in staat om te strijden om sloten. Het zorgt er ook voor dat ten minste één thread verder gaat.
33) Welke JVM-parameter wordt gebruikt om de stapelgrootte van een thread te regelen?
Om de stapelgrootte van Thread in Java te regelen, wordt de Xss-parameter gebruikt.
34) Kun je een thread twee keer starten in Java?
Nee, als een thread eenmaal is gestart, kan deze niet voor de tweede keer worden gestart.
35) Wat is het doel van het gebruik van de vloeimethode van de draadklasse?
De opbrengstmethode is de eenvoudigste manier om de huidige thread te verzoeken de CPU af te staan, zodat de andere thread wordt gebruikt. Het is een statische methode en garandeert alleen dat de huidige thread de CPU zal opgeven, maar vertelt niets over welke andere thread ook invloed heeft op de CPU.
36) Wanneer kunnen we zeggen dat threads geen lichtgewicht proces zijn in Java?
Threads zijn geen lichtgewicht processen wanneer threads van hetzelfde proces tegelijkertijd worden uitgevoerd. Hoewel, als threads van verschillende processen tegelijkertijd worden uitgevoerd, threads een zwaar proces worden.
37) Kan het mogelijk zijn om de constructor van een Java-klasse te synchroniseren?
Net als Java Standard kunnen constructors niet worden gesynchroniseerd omdat andere threads het object niet kunnen zien voordat het proces voor het maken van threads het heeft voltooid. Het is niet nodig dat de Java Objects-constructor wordt gesynchroniseerd, omdat deze het object dat wordt geconstrueerd zou vergrendelen.
38) Wat is een voorbijgaande variabele?
Een tijdelijke variabele is een variabele die tijdens de serialisatie niet kan worden geserialiseerd. Tijdens de serialisatie wordt deze geïnitialiseerd naar de standaardwaarde.
Deze interviewvragen zullen ook helpen bij je viva (oralen)
Hii
het helpt mij echt. tijdens de voorbereiding van het interview.
Het is echt prijzenswaardig om dit artikel te schrijven en deze informatie te verstrekken.
Ik kan het aanbevelen
5) Wat zijn de threadstatussen?
Uitvoerbaar is niet actief. Het is klaar om te draaien
bijgewerkt! Bedankt dat je hierop wijst
1. Uitvoerbare staten worden op besturingssysteemniveau gezien als een dubbellaag
2.Bijna alle programmeertalen beschouwen de thread als uitvoerbaar of NIET.
3. Een uitvoerbare thread kan de status (gereed of actief) hebben.
4. Je zou twee threads in uitvoerbare status kunnen hebben, maar er zal slechts één thread bestaan in de status "actief",
terwijl de tweede thread in een "actieve" staat bestaat.