La classe de thread contient des méthodes start () et run (). Ce chapitre répondra à cela. Le contenu de ce chapitre comprend:
Description de la différence entre start () et run ()
Exemple de la différence entre start () et run ()
Le code source lié à start () et run () (basé sur JDK1.7.0_40)
Description de la différence entre start () et run ()
start (): sa fonction est de démarrer un nouveau thread et le nouveau thread exécutera la méthode Run () correspondante. start () ne peut pas être appelé à plusieurs reprises.
run (): run () peut être appelé à plusieurs reprises comme les méthodes de membres ordinaires. Si vous appelez Run () séparément, Run () sera exécuté dans le thread actuel et le nouveau fil ne sera pas démarré!
Ce qui suit est un code à expliquer.
La copie de code est la suivante:
classe Mythread étend Thread {
public void run () {
...
}
};
Mythread mythread = new mythread ();
MyThread.Start () démarre un nouveau thread et exécute la méthode run () dans le nouveau thread.
MyThread.Run () exécutera la méthode Run () directement dans le thread actuel et ne démarrera pas un nouveau thread pour run run ().
Exemple de la différence entre start () et run ()
Ci-dessous, démontrez la différence entre eux avec un exemple simple. Le code source est le suivant:
La copie de code est la suivante:
public synchronisé vide start () {
// Si le fil n'est pas "prêt", une exception est lancée!
if (ThreadStatus! = 0)
jeter un nouveau IllégalThreadStateException ();
// ajouter du thread à ThreadGroup
groupe.add (ceci);
booléen a démarré = false;
essayer {
// Démarrez le fil via start0 ()
start0 ();
// Définissez la balise démarrée
démarré = true;
} enfin {
essayer {
si (! démarré) {
group.ThreadStartFailed (this);
}
} Catch (Ignore thrownable) {
}
}
}
Résultats en cours:
La copie de code est la suivante:
Appel principal Mythread.Run ()
Main est en cours d'exécution
Appel principal Mythread.start ()
Mythread fonctionne
Description des résultats:
(01) thread.currentThread (). GetName () est le nom utilisé pour obtenir le "thread actuel". Le thread actuel fait référence au thread qui doit s'exécuter dans le CPU.
(02) Mythread.run () est appelé dans "Main Thread Main", et la méthode run () s'exécute directement sur "Main Thread Main".
(03) Mythread.start () Démarrer "Thread Mythread".
Le code source lié à start () et run () (basé sur JDK1.7.0_40)
Le code source de la méthode start () dans thread.java est le suivant:
La copie de code est la suivante:
public synchronisé vide start () {
// Si le fil n'est pas "prêt", une exception est lancée!
if (ThreadStatus! = 0)
jeter un nouveau IllégalThreadStateException ();
// ajouter du thread à ThreadGroup
groupe.add (ceci);
booléen a démarré = false;
essayer {
// Démarrez le fil via start0 ()
start0 ();
// Définissez la balise démarrée
démarré = true;
} enfin {
essayer {
si (! démarré) {
group.ThreadStartFailed (this);
}
} Catch (Ignore thrownable) {
}
}
}
Remarque: start () démarre réellement le thread via la méthode locale start0 (). start0 () exécutera un nouveau thread, et le nouveau thread appellera la méthode run ().
La copie de code est la suivante:
Native void start0 ();
Le code de run () dans thread.java est le suivant:
La copie de code est la suivante:
public void run () {
if (cible! = null) {
Target.run ();
}
}
Description: la cible est un objet coulable. Run () doit appeler directement la méthode run () du membre Runnable du thread et ne créera pas un nouveau thread.