Top 40 vragen en antwoorden over Java Multithreading-interviews – editie 2026

Voorbereiding op een Java-multithreading-interview vereist een diepgaand begrip van concurrency-concepten en praktische ervaring. Hieronder vindt u 40 zorgvuldig opgestelde vragen en antwoorden van experts die alles bestrijken, van basisdefinities tot geavanceerde onderwerpen zoals virtuele threads en gestructureerde gelijktijdigheid.
👉 Gratis pdf-download:vragen en antwoorden over Java Multithreading-interviews
1) Wat is multithreading in Java en waarom wordt het gebruikt?
Met multithreading kan een Java-toepassing meerdere threads tegelijkertijd uitvoeren, waardoor het CPU-gebruik wordt gemaximaliseerd en de responsiviteit wordt verbeterd. Het is vooral waardevol voor I/O-gebonden taken, grootschalige berekeningen en GUI-updates waarbij de ene thread kan blokkeren terwijl de andere doorgaat met verwerken.
Voordelen
- Hoger CPU-gebruik
- Verminderde latentie voor onafhankelijke bewerkingen
- Verbeterde reactiesnelheid van de gebruikersinterface
Voorbeeld :Een webserver kan tientallen clientverzoeken tegelijkertijd verwerken door elk verzoek aan een afzonderlijke thread toe te wijzen, waardoor blokkering van I/O-bewerkingen wordt vermeden.
2) Leg de levenscyclus van een thread in Java uit.
Java-threads doorlopen de volgende statussen:
| Status | Beschrijving | |||
|---|---|---|---|---|
| Nieuw | Thread aangemaakt maar nog niet gestart. | |||
| Uitvoerbaar | Thread is klaar voor gebruik of is momenteel actief. | |||
| Geblokkeerd | Thread wacht op monitorvergrendeling. | |||
| Wachten | Thread wacht voor onbepaalde tijd op het signaal van een andere thread. | |||
| Getimed wachten | Thread wacht een bepaalde duur. | |||
| Beëindigd | Thread is uitgevoerd. |
| Criteria | Proces | Draad | ||
|---|---|---|---|---|
| Geheugen | Eigen adresruimte | Aandelen verwerken geheugen | ||
| Communicatie | Vereist IPC | Deelt geheugen rechtstreeks | ||
| Aanmaakkosten | Duur | Lichtgewicht | ||
| Foutimpact | Geïsoleerd | Kan broers en zussen beïnvloeden | ||
| Aspect | start() | run() | ||
| Threads maken | Maakt een nieuwe OS-thread | Wordt uitgevoerd in huidige thread | ||
| Aanroep | Plant thread in JVM | Eenvoudige methodeaanroep | ||
| Gelijktijdigheid | Asynchrone uitvoering | Sequentiële uitvoering |
| Methode | Klasse | Vergrendeling | Doel | Duur |
|---|---|---|---|---|
wait() | Object | Ja | Wacht op melding | Tot melding |
sleep() | Draad | Nee | Uitvoering onderbreken | Vaste tijd |
yield() | Draad | Nee | Schemaschakelaar voorstellen | Onvoorspelbaar |
| Zwembadtype | Fabrieksmethode | Beschrijving | |
|---|---|---|---|
| FixedThreadPool | newFixedThreadPool(n) | Vast aantal threads | |
| CachedThreadPool | newCachedThreadPool() | Maakt indien nodig threads en hergebruikt inactieve threads | |
| SingleThreadExecutor | newSingleThreadExecutor() | Single worker-thread voor sequentiële uitvoering | |
| ScheduledThreadPool | newScheduledThreadPool(n) | Ondersteunt vertraagde of periodieke taken | |
| WorkStealingPool | newWorkStealingPool() | Maakt dynamisch gebruik van beschikbare processors |
| Functie | synchronized | ReentrantLock | |
|---|---|---|---|
| Acquisitie | Impliciet | Expliciet via lock() | |
| Ontgrendelen | Automatisch bij het verlaten van de methode | Handmatig via unlock() | |
| Probeer/Time-out | Niet beschikbaar | Ondersteunt tryLock() en time-out | |
| Eerlijkheid | Niet configureerbaar | Ondersteunt eerlijk bestellen | |
| Conditievariabelen | Niet ondersteund | Ondersteunt meerdere Condition objecten | |
| Aspect | vluchtig | gesynchroniseerd | |
| Doel | Zichtbaarheid | Atomiciteit + zichtbaarheid | |
| Atomiciteit | Geen garantie | Gegarandeerd | |
| Vergrendelen | Nee | Ja | |
| Gebruiksscenario | Eenvoudige vlaggen | Samengestelde bewerkingen | |
| Aspect | Semafoor | Vergrendelen | |
| Doel | Beperk gelijktijdige toegang | Wederzijdse uitsluiting | |
| Vergunningen | Meerdere | Enkel | |
| Blokkeren | Verkrijgt vergunning | Verkrijgt eigendom | |
| Gebruiksscenario | Verbindingspooling | Bescherming van kritieke secties |
| Functie | ConcurrentHashMap | gesynchroniseerde kaart | |
|---|---|---|---|
| Vergrendelde granulariteit | Segmentniveau (gedeeltelijk) | Gehele kaart | |
| Prestaties onder druk | Hoog | Laag | |
| Null sleutels/waarden | Niet toegestaan | Toegestaan | |
| Iteratorconsistentie | Zwak consistent | Faalsnel | |
| Gelijktijdige leesbewerkingen | Toegestaan | Geblokkeerd | |
| Aspect | Parallelle streams | Draden | |
| Abstractie | API op hoog niveau | Besturing op laag niveau | |
| Beheer | Automatisch via ForkJoinPool | Handmatige threadpool | |
| Afstemmen | Gebruikt gemeenschappelijk zwembad | Aangepaste poolgrootte | |
| Foutafhandeling | Beperkt | Volledige controle |
| Functie | CountDownLatch | CyclischeBarrier | Faser |
|---|---|---|---|
| Resetten | Nee | Ja | Ja |
| Feesten | Opgelost | Opgelost | Dynamisch |
| Gebruiksvoorbeeld | Wacht tot de taken zijn voltooid | Threads om te ontmoeten | Dynamische coördinatie |
| Aspect | Uitvoerbaar | Oproepbaar | |
| Retourwaarde | Nee | Ja | |
| Uitzonderingen gecontroleerd | Nee | Ja | |
| Pakket | java.lang | java.util.concurrent |
| Functie | Platformthreads | Virtuele discussies |
|---|---|---|
| Beheerd door | Besturingssysteem | JVM |
| Aanmaakkosten | Hoog | Zeer laag |
| Gelijktijdigheidsniveau | Duizenden | Miljoenen |
| Planning | OS‑niveau | JVM-coöperatie |
| Gebruiksvoorbeeld | CPU-gebonden taken | I/O-gebonden/hoge gelijktijdigheidstaken |
| Concept | Definitie | Voorbeeld |
|---|---|---|
| Gelijktijdigheid | Taken tussen elkaar plaatsen | 1000 klantverzoeken gelijktijdig verwerken |
| Parallelisme | Gelijktijdige uitvoering | Berekeningen uitvoeren over CPU-kernen |
| Hulpprogramma | Doel | |
|---|---|---|
| jstack | Threaddump vastleggen | |
| jconsole / VisualVM | Realtime monitoring | |
| Java-vluchtrecorder (JFR) | Profiling met lage overhead | |
| Missiecontrole (JMC) | JFR-opnames visualiseren | |
| asynchrone profiler | CPU- en toewijzingsprofilering | |
| ThreadMXBean | Programmatische inspectie | |
| Type | Definitie | Garantie |
| Vergrendelvrij | Tenminste één thread boekt vooruitgang. | Systeembrede voortgang. |
| Wacht gratis | Elke thread boekt vooruitgang in beperkte stappen. | Sterkste garantie. |
| Obstakelvrij | Vooruitgang zonder strijd. | Zwakste garantie. |