Thread.currentThread() ne renvoie pas le thread dans lequel le programme en cours s'exécute, mais renvoie le thread dans lequel le code Thread.currentThread() est exécuté.
Vous pouvez donc voir que lorsque le nouveau thread est construit, le code est exécuté dans le thread principal, tandis que le code de la méthode run est exécuté dans le thread.
C'est facile à comprendre en regardant le résultat
1. Lorsque new est un objet Thread, le nom par défaut est au format Thread-n Vous pouvez consulter le code source de Thread. 2. Ceci est un objet fil thisLorsque vous l'utilisez comme ça, c'est le fil actuel. 3. Thread.currentThread() renvoie toujours le fil de discussion en cours d'exécution.
Le résultat d'exécution de la méthode constructeur est compréhensible, mais pourquoi le résultat d'exécution de la méthode run n'est-il pas testThread dans setName mais thread ?
Thread.currentThread() ne renvoie pas le thread dans lequel le programme en cours s'exécute, mais renvoie le thread dans lequel le code Thread.currentThread() est exécuté.
Vous pouvez donc voir que lorsque le nouveau thread est construit, le code est exécuté dans le thread principal, tandis que le code de la méthode run est exécuté dans le thread.
C'est facile à comprendre en regardant le résultat
1. Lorsque
new
est un objetThread
, le nom par défaut est au formatThread-n
Vous pouvez consulter le code source deThread
.2. Ceci est un objet fil
this
Lorsque vous l'utilisez comme ça, c'est le fil actuel.3.
Thread.currentThread()
renvoie toujours le fil de discussion en cours d'exécution.Le résultat d'exécution de la méthode constructeur est compréhensible, mais pourquoi le résultat d'exécution de la méthode run n'est-il pas testThread dans setName mais thread ?
1. La méthode getName() est héritée de la classe Thread. Il suffit de regarder la méthode getName() de la classe Thread :
2. Oui
3. Oui
Dans le constructeur, Thread.currentThread() est le thread principal et Thread.currentThread() dans la méthode run est le thread actuel