DEV Community

Cover image for Síncrono vs Assíncrono
Eduardo Silva
Eduardo Silva

Posted on

Síncrono vs Assíncrono

A programação síncrona e assíncrona são dois paradigmas fundamentais que influenciam a forma como os programas lidam com a execução de tarefas e a comunicação entre diferentes partes do código.

Síncrono:
Na programação síncrona, as operações são executadas uma após a outra, de forma sequencial. Quando uma tarefa é iniciada, o programa espera até que ela seja concluída antes de passar para a próxima. Isso significa que o fluxo de controle do programa é bloqueado até que a operação atual seja finalizada.

public class ExemploSincrono {

    public static void main(String[] args) {
        System.out.println("Início do Programa");

        // Executa a operação síncrona
        operacaoSincrona();

        System.out.println("Fim do Programa");
    }

    public static void operacaoSincrona() {
        System.out.println("Início da Operação Síncrona");

        // Simula uma operação demorada
        for (int i = 0; i < 5; i++) {
            System.out.println("Executando passo " + i);
        }

        System.out.println("Fim da Operação Síncrona");
    }
}
Enter fullscreen mode Exit fullscreen mode

Assíncrono:
Na programação assíncrona, as operações podem ser executadas em segundo plano sem bloquear o fluxo principal do programa. Isso permite que o programa continue a executar outras tarefas enquanto aguarda a conclusão de operações demoradas.

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class ExemploAssincrono {

    public static void main(String[] args) {
        System.out.println("Início do Programa");

        // Executa a operação assíncrona
        CompletableFuture<Void> future = CompletableFuture.runAsync(() -> operacaoAssincrona());

        // Realiza outras operações enquanto aguarda a conclusão da operação assíncrona
        System.out.println("Realizando outras operações");

        try {
            // Aguarda a conclusão da operação assíncrona
            future.get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }

        System.out.println("Fim do Programa");
    }

    public static void operacaoAssincrona() {
        System.out.println("Início da Operação Assíncrona");

        // Simula uma operação demorada
        for (int i = 0; i < 5; i++) {
            System.out.println("Executando passo " + i);
        }

        System.out.println("Fim da Operação Assíncrona");
    }
}

Enter fullscreen mode Exit fullscreen mode

Bom, é isso, pessoal. Foi um exemplo simples de síncrono e assíncrono, com teoria e um pouco de código em Java na prática. Abraço a todos e até a próxima.

Top comments (0)