A diferença entre o método de inicialização e o método de execução no thread
Em um thread, se o método inicial chama o método de execução, por que optamos por chamar o método de início? Ou qual é a diferença entre chamar o método inicial e o método de execução em um thread java? Essas duas perguntas são duas perguntas de entrevistas multithread muito populares no nível do iniciante. Quando um programador Java começa a aprender threads, ele primeiro aprenderá a herdar a classe Thread, sobrecarregar o método Run ou implementar a interface executável, implementar o método RUN e, em seguida, chama o método inicial da instância do thread. Mas depois que ele tem alguma experiência, ele descobrirá que o método Start chamará o método de execução internamente, observando a documentação da API ou outras maneiras, mas muitos de nós sabemos que, quando nos pedirmos durante a entrevista, perceberemos a importância dessa pergunta. Neste tutorial de Java, entenderemos a diferença entre chamar o método de início e o método de execução ao iniciar threads em java
Esta postagem é um PostScript para alguns de nossos artigos publicados no Java Multithreading, por exemplo, diferença entre o Runnable e o Thread em Java e como resolver o problema do consumidor do produtor em Java usando o BlockingQueue. Se você ainda não os leu, poderá achar interessantes e úteis.
A diferença entre o start e a corrida no tópico Java
A principal diferença entre os métodos de inicialização e corrida é que, quando o programa chama o método de início, um novo thread será criado e o código no método de execução será executado no novo thread. No entanto, quando você chama diretamente o método de execução, o programa não criará um novo thread e o código dentro do método de execução será executado no thread atual. Na maioria dos casos, chamar o método de execução é um bug ou um erro. Como a intenção original do chamador é chamar o método Iniciar para iniciar um novo thread, esse erro pode ser detectado por muitas ferramentas de cobertura de código estático, como o Fingbugs. Se você deseja executar uma tarefa que leva muito tempo, é melhor usar o método Iniciar, caso contrário, seu thread principal ficará preso quando você chamar o método de execução. Outra diferença é que, uma vez iniciado um thread, você não pode chamar repetidamente o método de início do objeto Thread. Chamar o método inicial do tópico que já iniciou relatará uma exceção ilegalStateException, mas você pode chamar repetidamente o método de execução
A seguir, a demonstração do método de início e o método de execução
A tarefa no thread é imprimir o nome do encadeamento atual passado no valor da string.
Aqui podemos ver claramente a diferença entre os dois
classe pública DiffBewteEnstarTandrun {public static void main (string args []) {System.out.println (thread.currentThread (). getName ()); // Criando dois threads para o método de início e execução chamadas thread startThread = new Thread (nova tarefa ("start")); Thread runThread = new Thread (nova tarefa ("run")); startThread.start (); // Método de inicialização de chamadas do thread - será executado em // novo Thread RunThread.run (); // Método de execução de chamadas do thread - Executará // Threads atuais}/ * * Implementação simples de execução */ classe estática privada implementa Runnable {Private String Caller; Public Task (String Caller) {this.caller = caller; } @Override public void run () {System.out.println ("Caller:" + Caller + "e o código neste thread é executado por:" + thread.currentThread (). GetName ()); }}}Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!