Recentemente, vi uma pergunta com o código da seguinte maneira:
A cópia do código é a seguinte:
public static void main (string args []) {
Thread t = new Thread () {
public void run () {
pong ();
}
};
t.run ();
System.out.println ("ping");
}
estático void pong () {
System.out.println ("Pong");
}
Pergunta, qual será o resultado?
Eu o corri muitas vezes, e acabou sendo Pong Ping. Mais tarde, finalmente descobri o ponto -chave, o objeto Thread T, que não chama o método start (), mas o método run (). Mais tarde, abri a depuração do modo de interrupção e descobri que, quando chamei o método Run (), havia apenas um thread em todo o programa. Somente então podemos competir com o encadeamento principal da CPU e pode haver vários resultados, mas como o método de saída a seguir é executado rapidamente, é basicamente a saída de "pingue -pongue".
Portanto, a diferença entre run () e start () é:
RUN () é um método definido na interface executável, que é para permitir que os programadores de clientes escrevam seu próprio código funcional nesse método. Não há diferença entre ligar diretamente e chamar seus próprios métodos de membros por classes comuns.
START () é um sinalizador que o thread começa a ser executado.
Então, eu acho que se você deseja escrever um tópico separado, é melhor herdar threads. .