Top 40 des questions et réponses d'entretien multithreading (2025)
Principales questions d'entretien sur le multithreading Java
Voici les questions d'entretien multithreading et leurs réponses pour les candidats débutants et expérimentés pour obtenir l'emploi de leurs rêves.
1) Qu'est-ce qu'un fil de discussion ?
Un Thread est une unité d’exécution concurrente. Nous pouvons dire que cela fait partie du processus qui peut facilement se dérouler simultanément avec d’autres parties du processus.
Téléchargement gratuit du PDF : Questions et réponses d'entretien multithreading
2) Qu’est-ce que le multithreading ?
multithreading en Java, il s'agit d'un processus d'exécution simultanée de deux ou plusieurs threads pour une utilisation maximale du processeur.
Le principal avantage est :
- Les threads partagent le même espace d'adressage
- Le fil reste léger
- Le coût de la communication entre les threads est faible.
3) Quels sont les états associés au thread ?
- Prêt à fonctionner
- Fonctionnement
- Attendre
- État mort
4) Discutez d’un cycle de vie des threads ?
Le cycle de vie d'un thread est similaire au cycle de vie des processus exécutés dans un le système d'exploitation. Au cours de son cycle de vie, le thread peut passer d'un état à un autre. Cependant, cela dépend de l'opération qui y est effectuée.
5) Quels sont les états des threads ?
Voici les différents états des threads :
Nouveau: Un thread qui vient d'être instancié est dans le nouvel état. Lorsqu'une méthode start() est invoquée, le thread passe à l'état prêt. Ensuite, il est déplacé vers l'état exécutable par le planificateur de threads.
- Exécutable: Un fil prêt à fonctionner
- Exécution: Un thread en cours d'exécution est en cours d'exécution.
- Bloqué: Un thread bloqué attend un verrouillage du moniteur et se trouve dans cet état. Cette chose peut également se produire lorsqu'un thread effectue une opération d'E/S et passe à l'état suivant.
- Attendre: C'est un thread qui attend qu'un autre thread effectue l'action spécifique.
- Timed_waiting : C'est un thread qui attend qu'un autre thread s'exécute.
- Résilié : Un thread qui s'est terminé est dans cet état.

6) Quelles sont les principales différences entre Thread et Process ?
Le thread est un sous-ensemble de processus. Le processus peut contenir plusieurs threads. Le processus peut s'exécuter sur un espace mémoire différent, mais tous les threads partagent le même espace mémoire.
7) Qu’est-ce qu’une impasse ?
Un blocage est une situation dans laquelle un thread attend un verrou d'objet, acquis par un autre thread et le deuxième thread attend également un verrou d'objet acquis par le premier thread. Comme les deux threads attendent l'un l'autre pour se libérer, cette condition est appelée blocage.
8) Qu'est-ce que LiveLock ?
Livelock se produit lorsque tous les threads sont bloqués et ne peuvent pas s'exécuter en raison de l'indisponibilité des ressources requises et de l'inexistence d'un thread débloqué.
Livelock peut se produire dans les conditions suivantes :
- Lorsque tous les threads d'un programme sont exécutés sur un objet avec zéro paramètre. Le programme est verrouillé en direct et n'est jamais traité jusqu'à ce qu'un ou plusieurs threads appellent Object.notify() ou Object.notifyAll() sur les objets concernés.
- Livelock se produit également lorsque tous les threads d'un programme sont bloqués dans des boucles infinies.

9) Qu'est-ce qu'un moniteur ?
- Le moniteur est un corps de code qui ne peut être exécuté que par un seul thread à la fois.
- Si un autre thread tente d'obtenir l'accès en même temps, il sera suspendu jusqu'à ce que le thread actuel libère le moniteur.
10) Qu’entendez-vous par manque de threads ?
Dans la situation où un thread ne dispose pas de suffisamment de CPU pour son exécution, une famine de thread se produit.
Cependant, cela peut arriver dans les scénarios suivants
- Les threads à faible priorité recevront moins de CPU que les threads à haute priorité. Les threads de priorité inférieure peuvent mourir de faim en attendant d'obtenir plus d'espace CPU pour effectuer des calculs.
- Le thread peut attendre indéfiniment un verrou sur le moniteur de l'objet, mais notify() peut réveiller à plusieurs reprises d'autres threads. Dans ce cas, le fil meurt également de faim.
11) Quelle est la signification du spin occupé en multi-threading ?
Le spin occupé est une technique que les programmeurs concurrents utilisent pour faire attendre un thread dans certaines conditions. Ceci est assez différent des méthodes traditionnelles comme wait() et sleep() qui impliquent toutes d'abandonner le contrôle du processeur. Cette méthode ne nécessite pas d’abandonner le processeur, mais exécute simplement la boucle vide.
12) Qu'est-ce que le changement de contexte en multi-threading ?
C'est le processus de stockage et de restauration de l'état du processeur. Cela aide à CV exécution du thread à partir du même point à un moment ultérieur. C'est l'une des fonctionnalités essentielles du système d'exploitation multitâche et de la prise en charge de l'environnement multithread.
13) Pourquoi le comportement des Threads est imprévisible ?
On peut dire que le comportement des threads est imprévisible car l'exécution des Threads dépend du planificateur de Threads. Il ne faut pas oublier que chaque planificateur de threads a une implémentation différente sur différentes plates-formes comme Windows, Unix, etc.
14) Comment suspendre l'exécution d'un Thread pendant un certain temps ?
La méthode sleep () est utilisée pour suspendre l’exécution du thread pendant un certain temps. Cependant, cela n’arrêtera pas le traitement du thread pendant une durée déterminée. Cependant, lorsque le thread sort du mode veille, son état passe à exécutable et, en fonction de la planification des threads, il sera exécuté.
15) Quelles sont les nombreuses façons dont un thread peut entrer dans l'état d'attente ?
Un thread peut entrer dans l'état d'attente des manières suivantes
- Utilisation de la méthode sleep()
- Blocage sur les E/S
- Tentative infructueuse d'acquérir le verrou d'un objet
- En appelant la méthode wait() d'un objet
16) Que se passe-t-il si nous ne remplaçons pas une méthode d'exécution ?
En Java, lorsque nous appelons la méthode start() sur un thread, elle appelle en interne la méthode run() avec le thread nouvellement créé. Ainsi, si nous ne remplaçons pas la méthode run(), le thread nouvellement créé ne sera pas appelé et rien ne se passera.
Exemple :
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) Quelle est la principale différence entre les méthodes Thread.start() et Thread?run() ?
La méthode Thread.start() (méthode native) de la classe Thread effectue le travail d’exécution de la méthode Thread.A run() dans un thread. Donc, si nous appelons directement Thread. La méthode run() s’exécute également dans le même thread. Ainsi, cela ne résoudra jamais le but de créer un nouveau fil de discussion.
18) Comment créer un thread en java ?
Il existe deux méthodes pour créer un thread en Java.
- Tout d'abord en implémentant l'interface Runnable, puis en créant un objet thread à partir de celle-ci.
- La deuxième méthode consiste à étendre la classe thread.
19) Quelle est la signification de la priorité des threads ?
Chaque fil a une priorité. Cependant, une priorité plus élevée est également prioritaire dans l'exécution. Cependant, cela dépend également de l'implémentation de Thread Scheduler qui dépend du système d'exploitation. Il est possible de modifier la priorité du thread, mais cela ne garantit pas que le thread de priorité plus élevée sera exécuté en premier.
20) Que fait la méthode join() ?
La méthode join() attend la mort d’un thread. Cela force tous les threads en cours d'exécution à cesser de s'exécuter jusqu'au moment où le thread se joint pour terminer son travail.
21) Qu'est-ce que le crochet d'arrêt Java ?
Le hook d'arrêt Java est utilisé pour nettoyer les ressources lorsque la JVM s'arrête. Des ressources propres signifient fermer le fichier journal, envoyer des alertes ou autre chose. Le hook d'arrêt doit être utilisé pour exécuter du code avant l'arrêt de la JVM.
22) Quelles sont les deux principales utilisations de volatile en Java ?
Les threads sont autorisés à conserver les valeurs des variables dans la mémoire locale. Si une variable est marquée comme volatile, chaque fois que la même variable est utilisée, elle doit être lue dans la mémoire principale.
De la même manière, chaque fois que la variable est écrite, la valeur doit être stockée dans la mémoire principale.
23) Comment partager des données entre deux threads en Java ?
Nous pouvons obtenir des données entre les threads en utilisant un objet partagé ou simultané Structure de données comme BlockingQueue. Il implémente un modèle producteur-consommateur en utilisant des méthodes d'attente et de notification. Cela implique également de partager des objets entre deux threads.
24) Comment contrôler plusieurs threads simultanément ?
Plusieurs threads peuvent être contrôlés simultanément s'ils sont créés dans un objet ThreadGroup.
25) Qu'est-ce qu'une méthode de blocage en Java ?
En Java, la méthode de blocage est une méthode qui bloque jusqu'à ce que la tâche soit terminée. Par exemple, la méthode accept () des blocs ServerSocket jusqu'au moment où un client est connecté. Ici, le blocage fait référence à tout ce dont le contrôle ne reviendra pas à l'appelant tant que la tâche n'est pas terminée.
26) Quelle est la principale différence entre les méthodes wait() et sleep() ?
Attendez() | Sommeil () |
Cette méthode est définie dans la classe Object | La méthode est définie dans la classe Thread |
La méthode Wait() libère le verrou | Cette méthode ne libère jamais le verrou. |
27) Qu'est-ce qu'un objet immuable ? Comment cela peut-il aider à rédiger une application concurrente ?
Tout objet peut être considéré comme incontestable si son état ne change pas après sa construction. Les objets immuables sont utilisés pour créer des applications simples, fiables et simultanées.
Pour créer un objet immuable, il est important de rendre la classe et son membre final afin qu'une fois les objets créés, leur état ne soit pas modifié.
28) Dites-moi la différence entre céder et dormir ?
Lorsqu'une tâche appelle sa méthode rendement(), elle revient à l'état prêt.
Lorsqu'une tâche appelle sa méthode sleep(), elle revient à l'état d'attente.
29) Qu’est-ce que ThreadPool ?
ThreadPool est un pool de threads qui réutilise un nombre fixe de threads pour exécuter une tâche spécifique.
30) A quoi sert le mot-clé synchronisé ?
Le mot-clé synchronisé peut être appliqué à la méthode statique ou non statique. En utilisant Synchronized, un seul thread peut accéder aux méthodes synchronisées. Cependant, dans le cas où plusieurs threads tentent d’accéder à la même méthode. À ce moment-là, les autres threads doivent attendre le thread d’exécution. Il fournit également un verrou sur l'objet pour éviter une situation de concurrence critique.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Qu'est-ce qu'un mot clé volatile ?
Le mot clé volatile est un qualificatif appliqué à une variable lors de sa déclaration. Il indique au compilateur que la valeur de la variable peut changer à tout moment, sans qu'aucune action ne soit entreprise par le code.
32) Quelles sont les principales différences entre notify et notifyAll en Java ?
La méthode Notify() ne fournit aucun moyen de choisir un thread particulier, c'est pourquoi elle n'est utile que lorsqu'un seul While notifyAll() envoie une notification à tous les threads. Cela leur permet également de rivaliser pour les écluses. Cela garantit également qu'au moins un thread continuera.
33) Quel paramètre JVM est utilisé pour contrôler la taille de la pile d'un thread ?
Pour contrôler la taille de la pile de Thread dans Java, le paramètre Xss est utilisé.
34) Pouvez-vous démarrer un thread deux fois en Java ?
Non, une fois qu'un fil de discussion est démarré, il ne peut pas être démarré une deuxième fois.
35) Quel est le but d'utiliser la méthode rendement de la classe thread ?
La méthode Yield est le moyen le plus simple de demander au thread actuel d’abandonner le processeur afin que l’autre thread. Il s'agit d'une méthode statique qui garantit uniquement que le thread actuel abandonnera le processeur, mais ne dit rien sur l'autre thread qui affecte également le processeur.
36) Quand peut-on dire que les threads ne sont pas des processus légers en Java ?
Les threads ne sont pas des processus légers lorsque les threads du même processus s’exécutent simultanément. Cependant, si les threads de différents processus s'exécutent simultanément à ce moment-là, les threads deviennent un processus lourd.
37) Est-il possible de synchroniser le constructeur d'une classe Java ?
Comme Java Standard, les constructeurs ne peuvent pas être synchronisés car les autres threads ne peuvent pas voir l'objet avant que le processus de création du thread ne l'ait terminé. Il n'est pas nécessaire que le constructeur d'objets Java soit synchronisé car cela verrouillerait l'objet en cours de construction.
38) Qu'est-ce qu'une variable transitoire ?
Une variable transitoire est une variable qui ne peut pas être sérialisée lors de la sérialisation. Il est initialisé à sa valeur par défaut lors de la sérialisation.
Ces questions d'entretien vous aideront également dans votre soutenance
Hii
ça m'aide vraiment. lors de la préparation de l'entretien.
C'est vraiment louable d'écrire cet article et de fournir ces informations.
Je suis obligé de
5) Quels sont les états des threads ?
Runnable n’est pas à l’état En cours d’exécution. Il est prêt à fonctionner
mis à jour! Merci de l'avoir signalé
1.Les états exécutables sont considérés comme une bicouche au niveau du système d'exploitation
2. Presque tous les langages de programmation considèrent le thread comme exécutable ou NON.
3.Un thread exécutable peut être à l'état (prêt ou en cours d'exécution).
4. Vous pouvez avoir deux threads dans des états exécutables, mais un seul thread existera dans l'état « en cours d'exécution »,
tandis que le deuxième thread existe dans un état « en cours d’exécution ».