Ein super() wird verwendet, um den Konstruktor der Superklasse aus dem Konstruktor der Unterklasse auszuführen. In diesem Programm bleibt die Ausgabe mit oder ohne super() innerhalb des Konstruktors gleich. Könnten Sie bitte den Unterschied erklären, ob Sie in diesem Szenario Super() haben und nicht haben?Threads Beginner: Was ist der Sinn der Verwendung einer super() -Methode innerhalb des Konstruktors der Unterklasse (extending Thread class)?
class SomeThread extends Thread {
String ThreadName;
SomeThread(String ThreadName) {
super(ThreadName); //Why Oh Why ?
this.ThreadName = ThreadName;
}
public void run(){
for(int ctr=1; ctr<=10; ctr++) {
System.out.println("From "+ThreadName+"...."+ctr);
try {
sleep(1000);
}catch(Exception e) {
System.out.println("Exception in "+ThreadName);
}
}
}
}
class ThreadAliveDemo {
public static void main(String[] args) throws Exception {
SomeThread FThread = new SomeThread("Some Child Thread");
System.out.println("Some Child Thread is alive "+FThread.isAlive());
FThread.start();
System.out.println("Some Child Thread is running.."+FThread.isAlive());
for(int ctr = 1; ctr<=5; ctr++) {
System.out.println("From.."+Thread.currentThread().getName()+"..."+ctr);
Thread.sleep(1000);
}
FThread.join();
System.out.println("Some Child Thread is alive.."+FThread.isAlive());
for(int ctr=6; ctr<=10; ctr++) {
System.out.println("From.."+Thread.currentThread().getName()+"..."+ctr);
Thread.sleep(1000);
}
}
}
Warum erweitern Sie Thread in erster Linie? Wenn ich Sie wäre, würde ich einfach eine Klasse erstellen, die runnable implementiert und sie einem neuen Thread zuführt: 'new Thread (Runnable r)' oder nur eine Methode: 'new Thread (() -> method())' – Gelunox
Aber das ist nicht meine Frage :) – tardycoder30
@Gelunox Nichts an sich falsch mit der Erweiterung 'Thread'. – async