Nous savons tous qu'en Java, il y a deux moyens pour atteindre multi-thread, l'un consiste à continuer la classe de threads, et l'autre est d'implémenter l'interface gérée.
1. Quelles sont les différences entre les processus et les threads?
Le processus est une application d'exécution et le thread est une séquence d'exécution dans le processus. Un processus peut avoir plusieurs threads. Le fil est également appelé le processus léger.
2. Combien de manières différentes existe-t-il pour créer des fils? Lequel aimez-vous? Pourquoi?
Il existe trois façons de créer un fil:
(1) Hériter de la classe de threads (2) L'implémentation de l'interface Runnable (3) peut utiliser le framework exécuteur pour créer un pool de threads pour réaliser l'interface Runnable. Dans la conception de l'application qui a hérité d'autres objets, cela nécessite plus d'héritage (et Java ne prend pas en charge plus d'hérédité) et ne peut obtenir que des interfaces. Dans le même temps, le pool de threads est également très efficace et facile à réaliser et à utiliser.
3. Explication Résumé de plusieurs des utilisations des fils.
Pendant le processus d'exécution, les threads peuvent être dans l'état suivant:
Runnable: le thread est prêt à s'exécuter et il peut ne pas être exécuté immédiatement.
Exécution: le processus exécute le code du thread.
En attente: le fil est en état d'obstruction, en attente d'un traitement externe.
Dormir: le fil est obligé de dormir.
Bloc d'E / S (bloqué sur les E / S): en attente de l'opération d'E / S.
Bloqué sur la synchronisation: attendez le verrou.
Mort: le fil est exécuté.
4. Quelle est la différence entre la méthode de synchronisation et le bloc de code synchrone?
Dans la langue java, chaque objet a une serrure. Le thread peut utiliser le mot clé synchronisé pour obtenir le verrouillage de l'objet. Des mots clés synchronisés peuvent être appliqués au niveau de méthode (verrouillage granulaire grossier) ou au niveau du bloc de code (serrure de taille de particules fines).
5. Dans le moniteur (moniteur), comment fait-il une synchronisation du thread? Quel niveau de synchronisation le programme devrait-il faire?
Le moniteur et le verrouillage sont utilisés dans la machine virtuelle Java. Le moniteur surveille un bloc de code synchrone pour s'assurer qu'il n'y a qu'un seul thread pour exécuter des blocs de code synchrones à la fois. Chaque moniteur est associé à une référence d'objet. Le thread n'autorise pas le code de synchronisation d'exécution avant d'obtenir le verrou.
6. Qu'est-ce que l'impasse?
Les deux processus attendent que l'autre partie s'exécute avant de pouvoir continuer à s'exécuter. En conséquence, les deux processus sont en attente illimitée.
7. Comment s'assurer que N Threads peut accéder à N ressources sans conduire à des serrures mortes?
Lorsque vous utilisez plusieurs threads, un moyen très simple d'éviter les verrous morts consiste à spécifier l'ordre d'obtenir des verrous et des threads forcés pour obtenir des verrous dans l'ordre spécifié. Par conséquent, si tous les threads sont verrouillés et libérés dans le même ordre, il n'y aura pas de serrures mortes.