DEV Community

Criando várias threads em Java

Conceito:

  • É possível criar múltiplas threads em um programa Java.
  • Cada thread é uma instância independente de execução que compartilha os recursos da CPU.
  • A execução das threads pode não seguir a ordem de criação devido ao agendador do sistema.

Passos para criar várias threads:

Implementar a interface Runnable:

  • Define o método run() que contém o código que será executado pela thread.

Criar threads com a classe Thread:

  • Use o construtor da classe Thread para associar o objeto Runnable.
  • Inicie a execução da thread com o método start().

Gerenciar execução simultânea:

  • As threads executam de forma assíncrona e podem compartilhar o tempo de CPU.
// Implementa Runnable para criar uma thread
class MyThread implements Runnable {
    Thread thrd;

    // Construtor que inicializa a thread com um nome
    MyThread(String name) {
        thrd = new Thread(this, name);
        thrd.start(); // Inicia a thread
    }

    // Código a ser executado pela thread
    public void run() {
        System.out.println(thrd.getName() + " starting.");
        try {
            for (int count = 0; count < 10; count++) {
                Thread.sleep(400); // Pausa por 400ms
                System.out.println("In " + thrd.getName() + ", count is " + count);
            }
        } catch (InterruptedException exc) {
            System.out.println(thrd.getName() + " interrupted.");
        }
        System.out.println(thrd.getName() + " terminating.");
    }
}

// Classe principal
class MoreThreads {
    public static void main(String args[]) {
        System.out.println("Main thread starting.");

        // Criação de três threads filhas
        MyThread mt1 = new MyThread("Child #1");
        MyThread mt2 = new MyThread("Child #2");
        MyThread mt3 = new MyThread("Child #3");

        // Executando ações na 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

Saída esperada (exemplo):

Main thread starting.
Child #1 starting.
Child #2 starting.
Child #3 starting.
.In Child #1, count is 0
In Child #2, count is 0
In Child #3, count is 0
....In Child #1, count is 1
In Child #2, count is 1
In Child #3, count is 1
...
Child #1 terminating.
Child #2 terminating.
Child #3 terminating.
............Main thread ending.

Enter fullscreen mode Exit fullscreen mode

Pontos importantes:

Execução simultânea:

  • As threads compartilham o tempo de CPU e executam de forma intercalada.
  • A ordem de execução não é garantida.

Métodos úteis:

  • Thread.sleep(ms): Suspende a execução da thread atual por um tempo especificado.

Agendamento de threads:

  • O agendador de threads decide qual thread será executada a qualquer momento.

Conclusão:
Criar várias threads é útil para executar tarefas simultaneamente.
A saída do programa pode variar devido ao comportamento do agendador de threads.

Image description

Top comments (0)