java - ¿Por qué existe ''Thread Thread'' cuando ''implementa Runnable'' es el ganador en todos los casos
multithreading java-threads (2)
En los últimos 20 años o más desde que se lanzó Java 1.0, lo que se considera un buen patrón de diseño ha cambiado. Sin embargo, Java está comprometido con la compatibilidad con versiones anteriores, lo que significa que el código antiguo que podría usar patrones de diseño deficientes aún funcionará.
Una de mis mascotas odias es StringBuffer
por lo que nunca fue una buena idea hacer que su método estuviera sincronizado, fue reemplazado hace más de diez años, pero desafortunadamente los desarrolladores no pueden usarlo hoy, e incluso los nuevos lo usan, aunque lo fue. En desuso mucho antes de que comenzaran a usar Java.
Esta pregunta ya tiene una respuesta aquí:
- “Implementa Runnable” vs “extiende Thread” en Java 42 respuestas
Sé que se prefiere implements Runnable
en lugar de extends Thread
en los extends Thread
de Java, ya que nos permite extender alguna otra clase si es necesario. Pero si este es el caso, extends Thread
también tiene sus propias ventajas sobre los implements Runnable
y, de ser así, ¿cuáles son estas ventajas?
Porque a veces (casi nunca, pero a veces) quieres poder cambiar el comportamiento básico de Thread
.
Ahí es cuando necesitarás extenderlo.
Puede cambiarlo anulando un método de la clase Thread
, no puede hacerlo implementando uno de Runnable
.