"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Simultaneidade de thread em Java

Simultaneidade de thread em Java

Publicado em 19/11/2024
Navegar:382

Thread Concurrency In Java

Thread Concurrency ou Multithreading em Java avançado permite que vários threads sejam executados simultaneamente, melhorando o desempenho e a capacidade de resposta em aplicativos complexos. Aqui está uma análise concisa de seus principais conceitos e utilidades.

Principais recursos de multithreading em Java:

  1. Criando Tópicos.
  2. Gerenciamento de threads com executores
  3. Utilitários de simultaneidade
  4. Estrutura de bifurcação/junção
  5. Programação assíncrona com futuro completável

1️⃣ Criando Tópicos.

  • Estendendo Tópico: Crie um novo tópico substituindo o método run().

  • Implementando Runnable: passe uma instância Runnable para um objeto Thread.

  • Implementação de Callable: Ao contrário de Runnable, Callable permite que threads retornem um resultado e tratem de exceções verificadas.

2️⃣ Gerenciamento de Threads com Executores.

  • O Executor Framework do Java (java.util.concurrent.ExecutorService) gerencia pools de threads, permitindo o manuseio eficiente de tarefas.

  • Executores como FixedThreadPool e CachedThreadPool criam um pool de threads reutilizáveis, gerenciando-os de forma eficiente para reduzir a sobrecarga de criação de novos threads.

3️⃣ Utilitários de simultaneidade

  • Bloqueios: Mecanismos de bloqueio avançados como ReentrantLock fornecem mais flexibilidade do que métodos sincronizados, permitindo bloqueios cronometrados e interrompíveis.

  • Variáveis ​​Atômicas: O pacote java.util.concurrent.atomic inclui classes atômicas (AtomicInteger, AtomicLong) que oferecem thread-free sem bloqueio
    operações seguras.

  • Sincronizadores:incluem utilitários como:
    CountDownLatch: permite que um thread espere até que outros threads sejam concluídos
    tarefas.
    CyclicBarrier: sincroniza um número fixo de threads em um
    comum ponto de barreira.
    Semáforo: Controla o acesso aos recursos permitindo um número específico
    de threads simultâneos.

4️⃣ Estrutura de bifurcação/junção

  • 1. Para tarefas de divisão e conquista, ForkJoinPool divide uma tarefa em subtarefas menores que são processadas em paralelo, particularmente útil em algoritmos recursivos.

5️⃣ Programação Assíncrona com Futuro Completável

  • CompletableFuture permite programação assíncrona e sem bloqueio, permitindo encadear e combinar tarefas para fluxos de trabalho complexos.

Usando exemplo de tópico

Classe principal chama 2 threads diferentes

public class ThreadConcurrence {
    public static void main(String[] args) {
        // There is 2 type you have to call thread method
                //1- Extend Thread class
                //1- Implements Runnable class
        // why Implement concept is introduce here
                // because in java multiple thread dose not support that's so why implement class will introduce
                // ex- when u extend (inherit) base call, then at that time this call can not extend another Thread class.
        int n = 10;
        for (int i = 0; i 



Thread1--(estende o Thread)

public class Thread1 extends Thread{
    //If you are extend Thread class then you  most be used run()
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread1 is running now....");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

Thread2--(implementa Runnable)

public class Thread2 implements Runnable {
    //IF you are implement thread Then run() will be executed.
    // Because when you start a thread then run() automatically call and run
    public void run(){
        try {
            System.out.println("Thread2 is running.......");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

Conclusão:

Ao aproveitar essas ferramentas e estruturas, o multithreading Java avançado permite a construção de aplicativos escalonáveis ​​e de alto desempenho que podem lidar com tarefas simultâneas perfeitamente.

Para obter mais informações, sinta-se à vontade para mencionar seu Linkedin e GitHub para obter exemplos detalhados e exemplos de código! Deixe-me saber se você deseja algum ajuste específico.

Linkedin: https://www.linkedin.com/in/pravanjan-17p/

GitHub: https://github.com/Prabhanjan-17p

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/pravanjan17p/thread-concurrency-in-java-idb?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3