Reprendre les bases de Java (Seventeen) : Résumé sur le multi-threading
Processus
1 . ctrl shift esc Fenêtre du gestionnaire de tâches 2. Les programmes s'exécutent dans l'environnement du système d'exploitation et nécessitent des ressources CPU et mémoire À partir du moment où le programme commence à s'exécuter jusqu'à sa fermeture, ce processus est appelé processus 3. Le processus est unique. au système d'exploitation La notion de processus = programme en cours d'exécution 4. Un programme en cours d'exécution correspond à au moins un processus 5. Certains programmes adopteront une conception d'architecture multi-processus 7. Les processus sont indépendants les uns des autres et ne peuvent pas accéder les uns aux autres ni partager des ressources
2. Thread
1. Programme-Process Factory 2. La ligne de production dans l'usine est appelée un thread 3. Un processus contient des threads, et un thread est une unité d'exécution indépendante plus petite 4. Un processus peut contenir un thread (monothread) ou plusieurs threads (multi-thread) 5. QQ est un programme (processus) et chaque fenêtre de discussion ouverte est un thread 6. Quoi Nous avons écrit auparavant. Les programmes sont tous monothread et la JVM traitera automatiquement la méthode principale comme un thread (ligne de production) pour l'exécution. 7. Les threads ne peuvent pas s'exécuter indépendamment et ne peuvent pas être exécutés en dehors du processus. ressources du processus. 8. Les threads sont indépendants
3. Programmation multithread
1. Les programmes que nous avons écrits auparavant étaient tous monothread. , et la JVM traitera automatiquement la méthode principale comme un thread (ligne de production) pour exécuter 2. Il existe deux fonctions A/B dans un programme Si une programmation multithread est utilisée, la fonction A peut être exécutée dans un seul thread (production). ligne), et la fonction B peut être exécutée dans un seul thread (ligne de production). 3. Télécharger des images a. Téléchargez plusieurs images en même temps 4. Le multithread utilise en outre les ressources du processeur et de la mémoire, améliorant ainsi l'efficacité d'exécution du programme 5. Factory Thunder
4. CPU et multithreading
1. en même temps ? Le cerveau bascule entre l'écriture et le visionnage de films 2. Les films sont très rapides et le cerveau créera des illusions 3. La véritable "simultanéité" n'existe pas, le processeur est extrêmement rapide, à tour de rôle et aléatoirement entre plusieurs threads Switch
5. Java prend en charge le multi-threading
1 Il existe deux types de threads en Java : User Thread (thread utilisateur) et Daemon Thread (thread démon) ou. fil de service en arrière-plan). Le rôle du thread démon est de fournir des services pour l'exécution d'autres threads, tels que les threads GC. 2. Méthode 1 : Hériter de la classe Thread Méthode 2 : Implémenter l'interface Runnable
6. Méthode 1
1. Les classes que nous avons définies auparavant sont toutes classes ordinaires, car les codes de ces classes ne peuvent pas être exécutés en même temps, ces classes ne sont pas des classes de ligne de production 2. Java fournit spécifiquement une classe de ligne de production : classe java.lang.Thread, le code de cette classe peut être exécuté à en même temps 3. Étapes : La classe personnalisée hérite de la classe Thread et la classe que nous définissons devient la classe de ligne de production. Réécrivez la méthode d'exécution dans la classe personnalisée et mettez le code qui doit être exécuté en même temps. dans la méthode run. Dans la méthode principale, créez d'abord la ligne de production, puis démarrez la ligne de production start()
7. Classe de thread
public long getId() pour obtenir le numéro de thread (ID de thread), qui est utilisé lors de la création du thread généré. Les ID de fil de discussion sont uniques et restent inchangés à vie. public final void setName(String name), nommez le thread Si vous ne le nommez pas, il y en aura un par défaut : Thread-0, Thread-1... public final String getName(), get. le nom du thread public void start() , provoquant le démarrage de l'exécution du thread, et la JVM appellera automatiquement la méthode run() du thread. public static void sleep (long millis), laissez le thread dormir (pause) pendant combien de millisecondes public static Thread currentThread(), obtenez une référence à l'objet thread en cours d'exécution. (La méthode 2 sera utilisée)
8. Processus d'exécution multithread
1 La première chose que la JVM trouve est la méthode principale et la méthode principale. Le code est exécuté dans un thread, appelé thread principal 2. De plus, le thread créé manuellement peut être appelé thread enfant 3. Le programme doit attendre que tous les threads aient fini de s'exécuter avant de se terminer
9. Méthode 2
1. Inconvénients : Après avoir hérité de la classe Thread dans la méthode 1, vous ne pouvez pas hériter d'autres classes. Avantages : Simple et facile à mettre en œuvre. a. Nous personnalisons La classe implémente l'interface java.lang.Runnable b. Mettez le code qui doit être exécuté simultanément dans la méthode d'exécution c. Créez une ligne de production (Thread) dans main et démarrez-la 3. La méthode 2 n'a pas. les inconvénients de la méthode 1, mais est plus compliquée que la méthode 1
10. Problèmes de sécurité des threads,
1 Dans quelles circonstances y aura-t-il une sécurité des threads. problèmes? a. Plusieurs threads sont indépendants les uns des autres b. Plusieurs threads fonctionnent ou utilisent des ressources partagées 2. Plusieurs threads exploitent la même ressource partagée, mais les threads sont indépendants les uns des autres et n'ont aucun contact les uns avec les autres, il y aura donc des situations. où les données ne sont pas mises à jour de manière synchrone, ce qui est un problème de sécurité des threads 3. Cas de vente de billets de train Code à exécuter en même temps : Vendre 10 billets de train Ressources partagées : 10 billets de train Existent généralement sous forme d'attributs
11. Comment résoudre les problèmes de sécurité des fils
1. Idée : entrez dans les toilettes du train une par une... 2. Verrouillage de synchronisation, le terme professionnel est surveillance Monitor3. . Java construit automatiquement un moniteur dans chaque objet. Les verrous sont partout 4. Il existe deux façons de l'implémenter : Bloc de code de synchronisation Méthode de synchronisation
12. Bloc de code de synchronisation
1. Analysez d'abord quel code doit être verrouillé 2. synchronisé(verrouillage){ }3 Le verrou utilisé entre plusieurs threads doit être le même verrou
13. method
1. Mettez d'abord le code qui doit être verrouillé dans une méthode 2. Transformez la méthode en méthode de synchronisation public synchronisé void sell(){ Opération Le code qui partage les données est le code qui doit être synchronisé ;} 3. Le verrouillage de la méthode de synchronisation est celui-ci par défaut, qui est corrigé
14. Les avantages et les inconvénients du verrouillage de synchronisation
Avantages de la synchronisation : L'émergence de la synchronisation résout le problème de sécurité du multi-threading : Inconvénients de la synchronisation : Lorsqu'il y a un certain nombre de threads, car chaque thread jugera du verrouillage de la synchronisation, cela consomme beaucoup de ressources et le fera virtuellement. réduire l’efficacité opérationnelle du programme. (Les performances et la sécurité des threads ne peuvent pas être obtenues en même temps)
15. Problèmes détaillés
1. Les méthodes statiques peuvent-elles être remplacées par des méthodes synchronisées ? Oui, mais le verrou n'est pas ce fichier de bytecode de la classe chargée Student.class2. Le principe des problèmes de sécurité des threads est que des ressources partagées doivent exister et que plusieurs threads utilisent des ressources partagées 3. Le verrou doit être le même verrou
Ce qui précède est le résumé de Regaining the Basics of Java (Seventeen) : Multithreading Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois. (www.php.cn) !