Maison  >  Article  >  Java  >  Collection de questions d'entretien Java classiques (4)

Collection de questions d'entretien Java classiques (4)

王林
王林avant
2020-07-09 16:28:212268parcourir

Collection de questions d'entretien Java classiques (4)

1. Scénarios d'application du mécanisme de réflexion

(Tutoriels associés recommandés : questions d'entretien Java)

  1. Code inversé, tel que la décompilation

  2. Un framework combiné à des annotations telles que Retrofit

  3. Mécanisme de réflexion pure Application des frameworks tels que EventBus 2.x

  4. Génération dynamique de frameworks de classes tels que Gson

2. Qu'est-ce que le multi-threading ?

Le multi-threading fait référence à la technologie qui réalise l'exécution simultanée de plusieurs threads à partir d'un logiciel ou d'un matériel. Dans un programme, ces fragments de programme exécutés indépendamment sont appelés « threads », et le concept de programmation qui les utilise est appelé « multi-threading ».

Les ordinateurs dotés de capacités multithread peuvent exécuter plus d'un thread en même temps grâce à la prise en charge matérielle, améliorant ainsi les performances globales de traitement.

Collection de questions dentretien Java classiques (4)

Le thread principal est le premier thread généré dans le processus de création, qui est le thread correspondant à la fonction principale.

(Apprentissage recommandé : Programme d'introduction à Java)

3. Parlez-moi des avantages du multi-threading ?

1. Avantages du multi-threading

  • Le coût de création d'un nouveau fil est bien inférieur à celui de la création d'un nouveau processus

  • La commutation entre les threads nécessite que le système d'exploitation fasse très peu de travail par rapport à la commutation entre les processus

  • Les threads occupent beaucoup moins de ressources que les processus

  • Peut utiliser pleinement le nombre parallèle de multiprocesseurs

  • Après avoir attendu la fin de la lente opération d'E/S, le programme peut effectuer d'autres tâches informatiques

  • Applications gourmandes en informatique (CPU), afin de fonctionner sur des systèmes multiprocesseurs, le calcul est décomposé en plusieurs threads pour mettre en œuvre

  • Applications gourmandes en IO , afin d'améliorer les performances, les opérations d'E/S se chevauchent et les threads peuvent attendre différentes opérations d'E/S.

2. Inconvénients du multi-threading

  • Perte de performances (un thread gourmand en calcul est rarement bloqué par des événements externes et ne peut pas communiquer avec d'autres Les threads partagent le même processeur. Lorsque le nombre de threads gourmands en calcul est supérieur au nombre de processeurs disponibles, il peut y avoir une perte de performances importante. La perte de performances fait ici référence à la surcharge de synchronisation et de planification supplémentaire.)

  • Robustesse réduite (il y a un manque de protection entre les threads. Dans un programme multi-thread, du fait de la légère différence d'allocation de temps ou du partage de certains. L'impact possible des effets indésirables sur les variables qui devrait être partagé est important)

  • Manque de contrôle d'accès (car les processus constituent la granularité de base du contrôle d'accès, appelant certains systèmes d'exploitation dans un thread. Les fonctions affecteront l'ensemble du processus)

  • La difficulté de programmation augmente (l'écriture et le débogage d'un programme multithread sont beaucoup plus difficiles qu'un programme monothread.)

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

1. Planification

Un processus est une unité de base permettant au système d'exploitation d'allouer des ressources. Les threads sont l’unité de base de la planification du processeur.

2. Concurrence

Après l'introduction des threads, non seulement les processus peuvent être exécutés simultanément, mais plusieurs threads dans un processus peuvent également être exécutés simultanément, permettant même à un seul de s'exécuter. simultanément.

De même, les threads de différents processus peuvent également s'exécuter simultanément. Cela permet au système d'exploitation d'avoir une meilleure simultanéité, améliorant ainsi l'utilisation des ressources et le débit du système.

3. Posséder des ressources

Un processus peut posséder des ressources et constitue l'unité de base permettant au système de posséder des ressources. Le thread lui-même ne possède pas de ressources système, seulement certaines ressources pouvant assurer un fonctionnement indépendant. Cette ressource est privée à chaque thread.

Par exemple, l'ID du thread, un ensemble de registres, la pile, le numéro d'erreur, le mot du masque de signal (il n'y a qu'un seul signal en attente dans un processus, mais n'importe quel thread peut gérer ce signal), la priorité de planification.

4. Indépendance

L'indépendance des threads dans le même processus est bien inférieure à celle des différents processus.

5. Frais généraux du système

Les frais généraux de commutation de threads sont inférieurs aux frais généraux de commutation de processus

Prise en charge du système multiprocesseur

Pour. les processus traditionnels, c'est-à-dire un processus monothread, quel que soit le nombre de processeurs, le processus ne peut s'exécuter que sur le même processeur, mais pour un processus multithread, plusieurs threads d'un processus peuvent être attribués à plusieurs processeurs, de sorte que son exécution simultanée accélère l’achèvement du processus.

(Tutoriel vidéo recommandé : Tutoriel vidéo Java)

5. Scénarios d'application de processus et de threads

Collection de questions dentretien Java classiques (4)

  • Nécessité de créer et de détruire fréquemment des fils de discussion prioritaires.

  • Donnez la priorité aux threads qui nécessitent des calculs lourds.

  • Les threads sont utilisés pour les corrélations fortes, et les processus sont utilisés pour les corrélations faibles.

  • Il peut être étendu pour utiliser des processus pour la distribution multi-machines et des threads pour la distribution multicœur.

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