Como Atrasar Poucos Segundos em Java

Mohammad Irfan 12 outubro 2023
  1. Faça um atraso utilizando o método Thread.sleep() em Java
  2. Faça um atraso utilizando o método TimeUnit.sleep() em Java
  3. Faça um atraso utilizando o ScheduledExecutorService em Java
  4. Faça um atraso utilizando o ScheduledExecutorService em Java
Como Atrasar Poucos Segundos em Java

Este tutorial introduz como fazer um atraso em Java e lista alguns exemplos de códigos para entendê-lo.

Há várias maneiras de criar um atraso, como TimeUnit.sleep(), ScheduleAtFixedRate(), e Thread.sleep() métodos, etc. Vamos ver os exemplos.

Faça um atraso utilizando o método Thread.sleep() em Java

A Thread é uma classe Java que é utilizada para criar e executar tarefas simultaneamente e fornece um método sleep() para pausar a execução atual por um tempo.

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        Thread.sleep(1000);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Resultado:

Sleep 0
Sleep 1

Faça um atraso utilizando o método TimeUnit.sleep() em Java

Neste exemplo, utilizamos o método sleep() da classe TimeUnit, que é utilizado para fazer um atraso de execução pelo tempo especificado. A classe TimeUnit pertence a um pacote API concorrente em Java.

import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        TimeUnit.SECONDS.sleep(2);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Resultado:

Sleep 0
Sleep 1

Faça um atraso utilizando o ScheduledExecutorService em Java

Java fornece uma classe ScheduledExecutorService para agendar a execução em um ambiente concorrente. Podemos utilizar o método run() dentro dele para executar o caminho de execução separado. Veja o exemplo abaixo.

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String args[]) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
          executeTask();
        }
      }, 0, 1, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

Resultado:

Task Executing... 
Task Executing... 
Task Executing... 

Faça um atraso utilizando o ScheduledExecutorService em Java

Se você estiver trabalhando com Java 9 ou versão superior, você pode utilizar o conceito de referência do método para chamar o método dentro do método scheduleAtFixedRate(). Veja o exemplo abaixo.

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(SimpleTesting::executeTask, 1, 2, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

Resultado:

Task Executing... 
Task Executing... 
Task Executing...