DEV Community

Exercício Tente Isto 11-1: Extendendo Thread

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.");
    }
}

Enter fullscreen mode Exit fullscreen mode

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.

Enter fullscreen mode Exit fullscreen mode

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)