Deux façons de personnaliser les threads
Personnalisez une classe d'implémentation d'interface Runnable, puis construisez un thread, c'est-à-dire passer une classe d'interface Runnable au thread.
Nouveau thread ou écrivez une sous-classe de thread pour remplacer sa méthode d'exécution. (Nouveau thread et remplacer la méthode d'exécution est en fait un moyen de la classe intérieure anonyme)
Exemple de code
public static void main (String [] args) {new Thread (new Runnable () {@OverRidePublic void run () {System.out.println ("Créer Thread en passant une cible runnable!");}}). start (); thread () {@ overridepublic Void run () {System.out.Println ("Créer du thread par overniter Run Run () {System.out.Println (" Créer un thread par overniter Run Run () {System.out.Println ("Créer un thread By Run Run Run () {System.out.Println (" Créer un thread By RUNI !");};}.commencer();}Les méthodes susmentionnées pour construire des threads de 1 et 2 sont conçues avec des objets de classe anonyme en raison de la méthode d'écriture de code. Les instructions auxiliaires suivantes sont maintenant effectuées:
1. Pour le premier paragraphe, je suis directement passé dans une instance anonyme ruissolable. Vous pouvez personnaliser une instance Runnable, puis obtenir du thread sous la forme de nouveau thread (Runnable);
2. Pour le deuxième paragraphe, vous pouvez définir spécifiquement une classe pour étendre la classe de base de thread, puis nouveau cette nouvelle classe de threads.
3. Pour ces deux segments, créez des objets de classe anonymes directement avec un nouveau thread. Vous pouvez définir une variable thread1 et thread2, puis utiliser thread1.start () thread2.start () pour démarrer le thread;
Analyse du code source
Quelle est la différence entre ces deux méthodes? L'effet final des deux est le même. Du niveau du code source, la méthode d'exécution par défaut du thread (si elle n'est pas écrasée) est la méthode d'exécution qui appelle la cible (la cible n'est pas vide). Target est la classe d'interface Runnable dans laquelle nous avons passé.
public synchronisé void start () {if (ThreadStatus! = 0) Jetez un nouveau IllégalThreadStateException (); Group.Add (this); booléen démarré = false; try {start0 (); start = true;} enfin {try {if (! démarré) {groupe.threadStartfaild (this);}} catch (landable ignore) {}}}Le thread Start appellera éventuellement Native Start0, ce qui entraînera l'appel de la machine virtuelle JVM à appeler la méthode d'exécution du thread.
public void run () {if (cible! = null) {Target.run ();}}Ici, la cible est un objet coulable dans le fil
cible de course privée;
Résumer
La méthode d'exécution de réécriture du thread est la méthode d'exécution exécutée par le thread lors du démarrage.
Lors du passage Runnable, le thread exécute la méthode d'exécution par défaut au démarrage. La méthode d'exécution appellera la cible passée et appellera la méthode d'exécution de la cible.
L'effet des deux est le même, ici est juste pour nous aider à voir les différences dans les détails du code.
Ce qui précède est une analyse complète des méthodes de début et d'exécution dans les threads Java introduits par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous voulez en savoir plus, faites attention à wulin.com!