Tout d'abord, jetez un œil à l'état de course de chaque étape du fil Java en cours d'exécution
Un thread est une entité dans un processus et est l'unité de base qui est planifiée et envoyée indépendamment par le système. processus avec d'autres fils qui appartiennent au même processus. Un thread peut créer et annuler un autre thread, et plusieurs threads dans le même processus peuvent être exécutés simultanément. En raison des contraintes mutuelles entre les threads, les threads apparaissent intermittents pendant le fonctionnement.
Dans les systèmes d'exploitation qui introduisent des threads, les processus sont généralement utilisés comme unité de base pour allouer des ressources et les threads sont utilisés comme unité de base pour le fonctionnement indépendant et la planification indépendante. Étant donné que les threads sont plus petits que les processus et ne possèdent pas des ressources système, les frais généraux de planification seront beaucoup plus petits, ce qui peut améliorer plus efficacement le degré d'exécution simultanée entre plusieurs programmes du système, améliorant ainsi considérablement l'utilisation et le débit des ressources du système.
Les threads sont un processus de contrôle séquentiel unique dans un programme. Exécuter plusieurs threads simultanément dans un seul programme pour effectuer différents travaux, appelé multithreading.
Multithreading est principalement utilisé pour économiser le temps du processeur et l'utiliser.
Le multithreading consiste à effectuer plusieurs tâches simultanément, non pas pour améliorer l'efficacité opérationnelle, mais pour améliorer l'efficacité de l'utilisation des ressources pour améliorer l'efficacité du système. Les threads sont implémentés lorsque plusieurs tâches doivent être effectuées en même temps.
Il existe deux façons d'implémenter le multi-threading en Java
1. Hériter de la classe de threads
2. Implémentez l'interface runnable
Quels sont les points communs de ces deux méthodes:
Peu importe la méthode utilisée, vous devez utiliser du thread (s'il s'agit d'une sous-classe de thread, utilisez-la elle-même) pour générer le thread, puis appelez la méthode start ().
Les différences entre les deux méthodes:
1. L'un des inconvénients de la classe de threads hérités est l'héritage unique, tandis que l'implémentation de l'interface runnable compense ses lacunes, et un héritage multiple peut être réalisé.
2. Si vous héritez de la classe de threads, si vous générez un objet d'instance Runnable, vous devez générer plusieurs objets d'instance Runnable, puis utiliser du thread pour générer plusieurs threads; Cette classe puis utilise cette instance. C'est-à-dire que le partage des ressources est réalisé
Sur la base des deux points ci-dessus, il est recommandé d'utiliser la deuxième méthode
Ce qui suit est un exemple pour illustrer
Programme 1:
package com.dr.runnable1; // une classe hérite de la classe de threads, alors cette classe est une classe multi-thread. / Si pour utiliser le multithreading, vous devez avoir le corps d'une méthode public void run () {// imprimer pour (int i = 0; i <10; i ++) {System.out.println (this.name + "--- -> run ,,,, ");}}} public class Demo1 {public static void main (String args []) {// La première méthode runnable r1 = new Mythread (" thread a "); runnable r2 = new mythread (Thread B "); ); Méthodes // Mythread MT1 = new Mythread ("Thread A"); // Mythread MT2 = new Mythread ("Thread B"); // Mythread MT3 = new Mythread ("Thread C"); // mt1.start () ; // mt1.start (); // thread ne peut démarrer qu'une fois // mt2.start (); // mt3.start ();Les résultats en cours d'exécution du programme sont:
Ceci hérite de la classe de threads, la première méthode génère plusieurs objets d'instance Runnable, puis utilise du thread pour générer plusieurs threads
La deuxième méthode est que parce que cette classe a hérité de la classe de threads, elle peut l'utiliser directement pour générer plusieurs threads.
Programme 2:
package com.dr.runnable1; class myThread1 implémente Runnable {private int billetters = 10; public void run () {for (int i = 0; i <500; i ++) {if (this.t icket> 0) {System. Out .println ("Ticket ----->" + (this.ticket--));}}}} public class Demo2 {public static void main (String args []) {mythread1 mt = new myThread1 (); : :::::::::::::::::::::::::::::::::::- : :::::::::::::::::::::::::::::::::::- ::::::::::::::::::::::::::: Thread T1 = nouveau thread (mt); (mt); t1.start ();Résultats du programme en cours d'exécution:
Ce programme implémente Runnable, génère une classe d'objets d'instance, puis utilise du thread pour générer plusieurs threads.