← Questões de Programação

Programação · CESPE/CEBRASPE · 2023

Questão comentada de Programação

public class Main extends Thread { public static void main(String[] args) { Main Exemplo = new Main(); Exemplo.XPTO(); } public void run() { System.out.println("Hello thread"); } } Considerando o trecho de código em Java precedente, assinale a opção que apresenta o comando que deve substituir os caracteres XPTO para se executar a Thread no código.

Gabarito: A

Em Java, herdar de Thread não faz a execução acontecer por mágica. Você pode criar a classe, sobrescrever o método run() e até montar o objeto, mas a thread só entra em ação de verdade quando o método próprio de inicialização é chamado. É aqui que a prova gosta de confundir: uma coisa é definir o comportamento da thread, outra é iniciar sua execução. No código, o método run() contém o que será executado em paralelo, no caso, a mensagem "Hello thread". Porém, se você chamar run() diretamente, o código roda como uma chamada comum de método, no mesmo fluxo da main, sem criar uma nova thread. Para executar de fato em uma nova linha de execução, o comando adequado é start(). O método start() é o que solicita à JVM o início da thread. Depois disso, a própria JVM chama o run() em um novo contexto de execução. Isso é clássico em Java e cai muito em concurso porque parece detalhe, mas é conceito central de programação concorrente. Então, o gabarito A está correto porque start() inicia a thread, enquanto run() apenas define o que ela fará. Se a questão fosse sobre apenas "executar o código do método", aí a resposta poderia confundir; mas como pede explicitamente "executar a Thread", é start mesmo.

Continue treinando

Questões relacionadas