Dlaczego Thread
klasa została zaimplementowana jako zwykła klasa, a nie klasa abstrakcyjna z run()
metodą abstrakcyjną.
Czy może to spowodować jakieś problemy? A może ma to jakiś sens?
Ponadto Thread.start()
metoda ma być bardzo specyficzną metodą, której funkcjonalności nie może zaimplementować żadna inna klasa (jeśli się nie mylę). Dlatego myślę, że to final
słowo kluczowe byłoby bardziej odpowiednie do tego niż jakiejkolwiek innej metody.
Ale mogę zmienić tę metodę i używać jej tak, jak lubię,
public class Test extends Thread {
public static void main (String... args) {
Thread test = new Test();
test.start();
}
@Override
public void run() {
System.out.println("New thread started...");
}
@Override
public void start() {
System.out.println("Did anyone tell you I will spawn a new thread??");
}
}
To oczywiście tylko wydrukowane,
Czy ktoś ci powiedział, że utworzę nowy wątek?
Czy ma sens zastępowanie innych niż dezorientowanie zastępującego cię inżyniera?
Jeśli nie, dlaczego metoda nie została zadeklarowana jako ostateczna w klasie Thread?