Maison  >  Article  >  Java  >  Questions d'entretien sur les nouvelles Java 2020 - Multithreading (1)

Questions d'entretien sur les nouvelles Java 2020 - Multithreading (1)

王林
王林avant
2020-04-25 17:54:422117parcourir

Questions d'entretien sur les nouvelles Java 2020 - Multithreading (1)

1. Quelle est la différence entre le parallélisme et la concurrence ?

Parallèle fait référence à deux événements ou plus se produisant en même temps ; la concurrence fait référence à deux événements ou plus se produisant au même intervalle de temps.

Le parallélisme correspond à plusieurs événements sur différentes entités, et la concurrence correspond à plusieurs événements sur la même entité.

Le parallèle traite plusieurs tâches "simultanément" sur un seul processeur, et la concurrence traite plusieurs tâches simultanément sur plusieurs processeurs. Tel que le cluster distribué hadoop.

L'objectif de la programmation simultanée est donc d'utiliser pleinement chaque cœur du processeur pour obtenir les performances de traitement les plus élevées.

(Tutoriels vidéo associés recommandés : vidéo Java)

2. Quelle est la différence entre les threads et les processus ?

En bref, un processus est l'unité de base de l'exécution d'un programme et de l'allocation des ressources. Un programme a au moins un processus et un processus a au moins un thread. Le processus dispose d'une unité de mémoire indépendante pendant l'exécution et plusieurs threads partagent des ressources mémoire, réduisant ainsi le nombre de temps de commutation et le rendant plus efficace. Un thread est une entité d'un processus, l'unité de base de planification et de répartition du processeur, ainsi qu'une unité de base plus petite qu'un programme et pouvant s'exécuter de manière indépendante. Plusieurs threads dans le même processus peuvent s’exécuter simultanément.

3. Qu'est-ce que le thread démon ?

Un thread démon est un thread de service Pour être précis, il sert d'autres threads.

4. Quelles sont les manières de créer un fil de discussion ?

(1) Héritez de la classe Thread pour créer une classe thread

Définissez une sous-classe de la classe Thread et remplacez la méthode run de la classe Le corps de la méthode run représente ce que la classe. le fil veut terminer la tâche. Par conséquent, la méthode run() est appelée le corps d’exécution.

Créez une instance de la sous-classe Thread, c'est-à-dire créez un objet thread.

Appelez la méthode start() de l'objet thread pour démarrer le thread.

(Tutoriel recommandé : Programme de démarrage Java )

(2) Créez une classe de thread via l'interface Runnable

Définissez la classe d'implémentation du interface exécutable et réécrivez la méthode run() de cette interface. Le corps de la méthode run() est également le corps d'exécution du thread.

Créez une instance de la classe d'implémentation Runnable et utilisez cette instance comme cible de Thread pour créer un objet Thread. Cet objet Thread est le véritable objet thread.

Appelez la méthode start() de l'objet thread pour démarrer le thread.

(3) Créez un thread via Callable et Future

Créez une classe d'implémentation de l'interface Callable et implémentez la méthode call(), qui servira de corps d'exécution du thread et aura un retour valeur .

Créez une instance de la classe d'implémentation Callable et utilisez la classe FutureTask pour envelopper l'objet Callable. L'objet FutureTask encapsule la valeur de retour de la méthode call() de l'objet Callable.

Utilisez l'objet FutureTask comme cible de l'objet Thread pour créer et démarrer un nouveau fil de discussion.

Appelez la méthode get() de l'objet FutureTask pour obtenir la valeur de retour une fois l'exécution du sous-thread terminée.

5. Quelle est la différence entre exécutable et appelable ?

C'est une question un peu profonde, et cela montre également l'étendue des connaissances qu'un programmeur Java peut acquérir.

La valeur de retour de la méthode run() dans l'interface Runnable est nulle, et ce qu'elle fait est uniquement d'exécuter le code dans la méthode run()

L'appel( dans le La méthode Callable interface ) a une valeur de retour et est un type générique. Elle peut être utilisée pour obtenir les résultats d'une exécution asynchrone en conjonction avec Future et FutureTask.

Si vous souhaitez en savoir plus sur les questions d'entretien Java, veuillez faire attention à la colonne Questions d'entretien avancées Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer