Neste exercício, você aprende a criar threads em Java estendendo a classe Thread diretamente, em vez de implementar a interface Runnable. Ao fazer isso, sua classe herda os métodos de Thread, o que facilita a manipulação da thread diretamente, sem a necessidade de instanciar uma thread separada.
Etapas do Exercício
Estenda a classe Thread:
Sua classe deve herdar de Thread e sobrescrever o método run().
Construtor da classe:
Use o construtor super(name) para dar um nome à thread e inicie a execução chamando start() diretamente.
Sobrescreva o método run():
Este método define o comportamento da thread. Aqui, a thread imprime seu nome e executa um loop.
Exemplo Funcional Completo:
Abaixo está o código:
// Define a classe que estende Thread
class MyThread extends Thread {
// Constrói uma nova thread
MyThread(String name) {
super(name); // Nomeia a thread
start(); // Inicia a thread
}
// Começa a execução da nova thread
public void run() {
System.out.println(getName() + " starting.");
try {
for (int count = 0; count < 10; count++) {
Thread.sleep(400); // Pausa por 400ms
System.out.println("In " + getName() + ", count is " + count);
}
} catch (InterruptedException exc) {
System.out.println(getName() + " interrupted.");
}
System.out.println(getName() + " terminating.");
}
}
// Classe principal para demonstrar a execução das threads
class ExtendThread {
public static void main(String[] args) {
System.out.println("Main thread starting.");
// Cria uma nova thread
MyThread mt = new MyThread("Child #1");
// Executa a thread principal
for (int i = 0; i < 50; i++) {
System.out.print(".");
try {
Thread.sleep(100); // Pausa por 100ms
} catch (InterruptedException exc) {
System.out.println("Main thread interrupted.");
}
}
System.out.println("Main thread ending.");
}
}
Como o Código Funciona
Criação da Thread Secundária:
A thread "Child #1" é criada e inicia imediatamente com start().
Execução da Thread Secundária:
A thread executa um loop, imprimindo mensagens e pausando por 400ms entre as iterações.
Execução da Thread Principal:
Enquanto isso, a thread principal imprime pontos (".") em intervalos de 100ms.
Saída do Programa (Exemplo)
Main thread starting.
Child #1 starting.
.In Child #1, count is 0
..In Child #1, count is 1
...In Child #1, count is 2
... (continua)
Main thread ending.
Child #1 terminating.
Observações
A thread principal e a secundária são executadas simultaneamente.
O método run() contém a lógica da thread secundária, enquanto a thread principal continua sua execução independente.
Top comments (0)