Pular para o conteúdo principal
Documentos
Palavras-chave JavaMatrizes JavaProgramação orientada a objetos em JavaManuseio de arquivos JavaIntrodução ao JavaNoções básicas da linguagem Java

Tópicos Java

Os threads do Java são uma parte fundamental do modelo de concorrência do Java, permitindo que várias tarefas sejam executadas simultaneamente em um programa. Um thread é um processo leve que permite a execução paralela do código, melhorando o desempenho e a capacidade de resposta do aplicativo, especialmente em sistemas com vários núcleos.

Uso

Os threads são usados em Java para executar operações em segundo plano sem interromper o fluxo principal do programa. Eles são ideais para tarefas como lidar com a entrada do usuário, realizar cálculos ou gerenciar operações de E/S simultaneamente.

Criando tópicos

O Java oferece duas maneiras principais de criar threads:

  1. Estendendo a classe Thread
  2. Implementando a interface Runnable

Exemplos

Exemplo 1: Estendendo o Thread Classe


class MyThread extends Thread {
    public void run() {
        System.out.println("Thread is running.");
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
    }
}
    

Neste exemplo, uma nova classe MyThread estende a classe Thread e substitui o método run(). O método start() é chamado para iniciar a execução do thread, que chama internamente o método run().

Exemplo 2: Implementando o Runnable Interface


class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Thread is running.");
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}
    

Aqui, a classe MyRunnable implementa a interface Runnable e fornece o método run(). Um objeto Thread é criado com uma instância de MyRunnable e iniciado usando o método start().

Exemplo 3: Usando expressões Lambda


public class LambdaThreadExample {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            System.out.println("Thread is running using lambda.");
        });
        thread.start();
    }
}
    

Este exemplo demonstra a criação de um thread usando as expressões lambda do Java 8, o que simplifica a sintaxe para implementar a interface Runnable.

Dicas e práticas recomendadas

  • Segurança da linha: Garanta que os recursos compartilhados sejam acessados de maneira segura para evitar inconsistências de dados e condições de corrida. Use mecanismos de sincronização como synchronized blocks ou ReentrantLock.
    
    synchronized (lockObject) {
        // critical section
    }
                
  • Evite o uso excessivo: A criação de muitos threads pode levar à exaustão de recursos. Use pools de threads (por exemplo, ExecutorService) para gerenciar os threads com eficiência.
    
    ExecutorService executor = Executors.newFixedThreadPool(10);
    executor.execute(new MyRunnable());
    executor.shutdown();
                
  • Rescisão graciosa: Implemente um mecanismo para encerrar graciosamente os threads quando eles não forem mais necessários. Use sinalizadores ou interrupções para sinalizar a parada dos threads.
    
    class MyRunnable implements Runnable {
        private volatile boolean running = true;
    
        public void run() {
            while (running) {
                // perform task
            }
        }
    
        public void stop() {
            running = false;
        }
    }
                
  • Use utilitários de simultaneidade de nível superior: Considere o uso dos utilitários de simultaneidade do Java do pacote java.util.concurrent, como CountDownLatch, CyclicBarrier e ConcurrentHashMap, para simplificar tarefas complexas de simultaneidade.
  • Tratar exceções: Sempre trate as exceções no método run() para evitar o encerramento inesperado do thread.
    
    public void run() {
        try {
            // perform task
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
                

Learn Java Essentials

Desenvolva suas habilidades em Java desde o início e domine os conceitos de programação.
Comece a aprender de graça