Почему класс Thread
реализован как обычный класс, а не абстрактный класс с run()
- абстрактным.
Может ли это возникнуть какие-либо проблемы? Или это имеет какое-то значение в этом отношении?
Кроме того, метод Thread.start()
должен быть очень специфическим методом , функциональность которого не может быть реализована каким-либо другим классом (если я не ошибаюсь). И, следовательно, я думаю, что ключевое слово final
было бы уместным для этого больше, чем любой другой метод.
Но я могу переопределить этот метод и использовать его как мне нравится,
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??");
}
}
Он явно напечатан,
Кто-нибудь скажет вам, что я создам новый поток?
Есть ли какое-либо использование в переопределении, кроме путаницы с заменой инженера?
Если нет, почему этот метод не был объявлен final в классе Thread?