public abstract class Event implements Runnable {
public void run() {
try {
Thread.sleep(delayTime);
action();
} catch(Exception e) {e.printStackTrace();}
}
}
Ich habe diese Ereignisklasse oben, wenn ich versuche, den Thread starten sie den ersten Befehl des Thread läuft - Thread.sleep (Verzögerungszeit); Da die Event-Klasse abstrakt ist, möchte ich einige ihrer untergeordneten Klassenmethoden ausführen. Zum Beispiel, wenn ich action() aufrufe; es sollteJava Aufruf Kind Klassenmethode in Multithreading
public class ThermostatNight extends Event {
public ThermostatNight(long delayTime) {
super(delayTime);
}
public void action() {
System.out.println(this);
thermostat = "Night";
}
public String toString() {return "Thermostat on night setting";}
}
Es gibt viele solche Kinderklassen, wie ThermostatDay, Fanon, FanOff, die sehr ähnlich sind, wie oben die Aktionsmethode aus der unteren Kind Klasse läuft. Was soll ich mit der Call-Aktion tun(); Nach dem Schlaf wird vom Befehl run() in der Event-Klasse aufgerufen?
Irgendwelche Ideen?
Ihre Hilfe wird geschätzt!
Ihr Code ist in Ordnung. Wenn Sie die run-Methode des ThermostatDay-Objekts ausführen, wird die Aktionsmethode von ThermostatDay aufgerufen. Ähnlich für andere Objekte. Die Aktionsmethode dieses Objekts wird aufgerufen, auf der die run-Methode ausgeführt wird –
Das passiert nicht, es druckt nicht die System.out.println (this); von der Kindklasse Aktionsmethode –
Es sollte nach Ablauf der Verzögerungszeit. Können Sie den Code anzeigen, wie Sie die run-Methode der untergeordneten Klasse ausführen? –