class NewThread1 extends Thread{
NewThread1(String name){
super(name); //this line replaced by 'new Thread(name);'
System.out.println("child Thread:"+this);
}
}
public class ThreadCreationExtend {
public static void main(String[] args) {
new NewThread1("Thread1");
new NewThread1("Thread2");
}
}
output:child Thread:Thread[Thread1,5,main]
child Thread:Thread[Thread2,5,main]
output after replacement:
child Thread:Thread[Thread-0,5,main]
child Thread:Thread[Thread-1,5,main]
J'essaie d'appeler le constructeur de la classe Thread, Thread (String name) au lieu d'utiliser super (nom) mais quand j'utilise new Thread (String name) la sortie est différente. S'il vous plaît expliquer la sortie différente. Est-ce dû au super constructeur par défaut? Si oui, comment puis-je utiliser le constructeur parent Thread (String name) sans super()?comportement super() en Java lors de l'appel explicitement du constructeur parent
'new Thread (name)' crée simplement un nouvel objet thread. Utiliser super (...) pour appeler le constructeur parent est la seule façon de le faire en Java (vous n'avez pas d'héritage multiple donc il n'y a pas de problème avec ça). – frenzykryger
En règle générale, il est généralement mauvais de créer vos propres classes de threads. Utilisez 'Runnable', et même alors, il est généralement préférable de les exécuter sur un exécuteur au lieu de threads individuels. – chrylis
@chrylis pouvez-vous expliquer ce que vous voulez dire par executer? –