Introduction aux questions et réponses d'entrevue multi-threading Java

Java est en plein essor ces jours-ci grâce à sa plateforme indépendante. Il peut être exécuté n'importe où et est donc largement utilisé avec différentes technologies à venir. Pour s'y préparer, le multi-threading est un sujet important qui est axé sur les entretiens. Vous avez donc enfin trouvé votre emploi de rêve en Java Multi-threading mais vous vous demandez comment casser l'interview et quel pourrait être le probable Java Multi-threading Questions d'entrevue. Chaque entretien est différent et la portée d'un travail est également différente. Laissez-nous passer par quelques questions d'entrevue Java multi-threading importantes qui peuvent être posées dans les interviews Java multi-threading que vous poursuivriez.

Vous trouverez ci-dessous les principales questions et réponses d'entrevue Java multi-threading

1.Qu'est-ce que Thread dans JAVA et comment l'implémentez-vous?

Répondre:
Un thread permet de faciliter le multitâche et le multitraitement au sein d'un programme. Il utilise efficacement le processeur et aide à améliorer les performances de l'application. Java permet à l'utilisateur d'utiliser plusieurs threads à la fois. Il peut fonctionner en parallèle avec d'autres programmes sans aucune interruption. Cela aide à réduire un temps pour le processus. Par exemple, si un programme prend 60 secondes pour s'exécuter, nous pouvons utiliser 6 threads qui nous donneront le résultat en 10 secondes.

Java offre deux façons d'implémenter le thread dans un programme. L'interface java.lang.Runnable a un thread d'instance java.lang.A qui nécessite l'exécution d'une tâche via une instance. La classe Thread implémente déjà Runnable, donc un utilisateur peut directement remplacer la méthode run () en étendant la classe Thread ou en implémentant l'interface Runnable.

2.Quand utiliser Runnable et quand utiliser Thread en Java?

Répondre:
Java ne prend pas en charge plusieurs héritages d'une classe, mais il permet d'implémenter plusieurs interfaces à la fois. Par conséquent, il sera préférable d'implémenter Runnable que d'étendre la classe Thread.

3. Comment différenciez-vous un thread d'un processus?

Répondre:
Un thread est un sous-ensemble d'un processus. Un processus peut avoir plusieurs threads en cours d'exécution. Les threads peuvent exécuter n'importe quelle partie d'un processus. Un processus a sa propre adresse où il est stocké, tandis que le thread partage l'adresse du processus qui l'a créé. La création d'un processus est un processus mouvementé alors que les threads peuvent être créés facilement. Un thread est généralement appelé processus léger. La communication interprocessus est difficile tandis que les threads peuvent communiquer facilement en utilisant les méthodes Java de wait () et notify (). Les processus sont indépendants, par conséquent, toute modification apportée au processus n'affecte pas les processus enfants. Au contraire, si des modifications sont apportées à un thread, il est possible que d'autres threads soient affectés.

4. Pourquoi dit-on que le comportement des threads est imprévisible?

Répondre:
La raison en est le planificateur de threads qui gère l'exécution des threads. Le planificateur peut avoir des performances différentes sur différentes plates-formes Windows, UNIX, LINUX, etc. Pendant l'exécution du même thread peut donner des sorties différentes sur différentes plates-formes et parfois même sur la même plate-forme. Pour résoudre ce problème, un utilisateur peut créer le même objet Runnable, créer des boucles run () dans les deux threads et démarrer les deux threads ensemble. Idéalement, le planificateur doit choisir les deux threads ensemble et les performances ne doivent pas être affectées, mais les deux threads entreront des boucles de manière anonyme.

5. Qu'est-ce qu'une variable volatile en Java et quelle est sa signification?

Répondre:
Java permet à l'utilisateur de partager des variables présentes dans différents threads. Une variable volatile agit comme un modificateur spécial qui ne peut être utilisé que pour les variables d'instance. Comme cette variable est partagée, il y aurait des changements cohérents avec elle. Le thread doit s'assurer qu'il a un accès exclusif à ces variables et un verrou est forcé pour l'exclusion mutuelle des variables partagées. Il garantit qu'une écriture aura lieu avant toute lecture conséquente. Le modèle de mémoire Java garantit la cohérence de cette variable. Les méthodes volatiles ne peuvent pas exister car elles ne peuvent être utilisées que sous forme de variables.

6. À quoi sert le mot-clé synchronisé? Quelle est la différence entre les mots clés synchronisés et volatils?

Répondre:
Le mot-clé synchronisé est utilisé lorsque le but est d'exécuter un seul thread à la fois dans une section de code appropriée. Il peut être utilisé pour afficher quatre types de blocs différents comme ci-dessous:

1) Méthodes d'instance
2) Méthodes statiques
3) Blocs de code à l'intérieur des méthodes d'instance
4) Blocs de code à l'intérieur des méthodes statiques

Il peut être déclaré comme:

Exemple de public void synchronisé () ()

La différence entre mot-clé volatile et synchronisé est que synchronisé peut être utilisé avec des variables et des méthodes, tandis que volatile ne peut pas être utilisé avec des méthodes. Les variables volatiles ne sont pas stockées dans la mémoire cache, les variables synchronisées sont stockées dans la mémoire cache. Une variable volatile n'atterrira jamais dans un blocage car elle ne nécessite aucun verrouillage. Dans les variables synchronisées, si elles ne sont pas effectuées correctement, cela peut se retrouver dans une impasse.

7. Pourquoi des méthodes comme wait (), notify () et notify all () sont présentes dans la classe objet et non dans la classe Thread?

Répondre:
La classe d'objets a des moniteurs qui permettent au thread de verrouiller un objet, tandis que Thread n'a aucun moniteur. Lorsque l'une des méthodes ci-dessus est appelée, elle attend qu'un autre thread libère l'objet et notifie le moniteur en appelant notify () ou notify all (). Lorsque la méthode notify () est appelée, elle fait le travail de notifier tous les threads qui attendent la libération de l'objet. Le moniteur de la classe d'objets vérifie si l'objet est disponible ou non. La classe de threads ayant ces méthodes n'aiderait pas car plusieurs threads existent sur un objet et non l'inverse.

8. Expliquez la différence entre les méthodes sleep () et wait ().

Répondre:
1) La méthode sleep () est appelée sur les threads et non sur les objets. La méthode Wait () est appelée sur les objets.
2) Lorsque la méthode wait () est appelée, le moniteur déplace le thread de l'exécution à l'état d'attente. Une fois qu'un thread est en attente (), il ne peut passer à runnable que lorsqu'il a notifié () ou notifyall () pour cet objet. Le planificateur change l'état après cela. En mode sleep (), l'état est modifié en attente et ne retournera à runnable qu'après la fin du temps de veille.
3) La méthode Wait () fait partie de la classe java.lang.Object, tandis que sleep () fait partie de la classe java.lang.Thread.
4) Wait () est toujours utilisé avec un bloc synchronisé car il nécessite de verrouiller un objet tandis que sleep () peut être utilisé depuis un bloc synchronisé extérieur.

9. Comment forcer le démarrage d'un thread en Java?

Répondre:
En Java, le multithreading ne peut pas forcer le démarrage d'un thread. Seul le planificateur de threads peut contrôler les threads et ils ne sont exposés à aucune API de contrôle.

10. Le thread laisse-t-il le verrouillage d'objet lorsque les méthodes wait () et sleep () sont appelées?

Répondre:
Lorsqu'un thread est en méthode sleep (), il ne quitte pas le verrou et passe en état d'attente. Le thread attend que le temps de sommeil soit terminé. Lorsque la méthode wait () est utilisée, le thread quitte le verrou d'objet et passe à l'état d'attente. Une fois notifié () est appelé, il passe à nouveau à l'état d'exécution et acquiert le verrou.

Article recommandé

Ceci a été un guide pour la liste des questions et réponses d'entrevue multi-threading Java afin que le candidat puisse réprimer facilement ces questions d'entrevue multi-threading Java. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Questions d'entrevue pour les développeurs Java - Comment résoudre les 7 principales questions
  2. Guide complet du développement d'applications Java (théorie impressionnante)
  3. D'entretiens et réponses à Maven Maven | Top et les plus demandés
  4. 10 questions d'entrevue avancées AngularJS pour les expérimentés