Recientemente vi una pregunta con el código de la siguiente manera:
La copia del código es la siguiente:
public static void main (string args []) {
Thread t = new Thread () {
public void run () {
apestar();
}
};
t.run ();
System.out.println ("ping");
}
void estático pong () {
System.out.println ("pong");
}
Pregunta, ¿cuál será el resultado?
Lo corrí muchas veces, y resultó ser Pong Ping. Más tarde, finalmente descubrí el punto clave, el objeto de subproceso t, que no llama al método Start (), sino el método Run (). Más tarde, abrí la depuración del modo de punto de interrupción y descubrí que cuando llamé al método Run (), solo había un hilo en todo el programa. Solo entonces podemos competir con el hilo principal para la CPU, y puede haber múltiples resultados, pero dado que el siguiente método de salida se ejecuta rápidamente, es básicamente la salida de "ping pong".
Entonces, la diferencia entre Run () y Start () es:
run () es un método definido en la interfaz runnable, que es permitir a los programadores de clientes escribir su propio código funcional en este método. No hay diferencia entre llamar directamente y llamar a su propio miembro métodos por clases ordinarias.
Start () es un indicador que el hilo comienza a ejecutar.
Así que creo que si desea escribir un hilo separado, es mejor heredar el hilo. .