Java Callback Consumer

import java.util.function.Consumer;

public class Main {

  public static void main(String[] args) {
    Main main = new Main();

    // Tâches de fond
    new Thread(() -> {
      // Callback avec un log direct à la console en cas d'erreur un log dans stderr
      main.longTask(5000, System.out::println, System.err::println);
    }).start();

    new Thread(() -> {
      main.longTask(5001, System.out::println, System.err::println);
    }).start();

    // Callback avec un traitement
    main.longTask(500, message -> {
      System.out.println("La fonction renvoie le message : " + message);
    }, System.err::println);

  }

  public void longTask(long time, Consumer < String > callback, Consumer < String > errorCallback) {
    try {
      if (time > 5000) {
        // Execute le callback erreur
        errorCallback.accept("Erreur temps > 5000 ms");
      } else {
        Thread.sleep(time);
        // Execute le callback
        callback.accept("Terminé !");
      }
    } catch (InterruptedException e) {
      // Execute le callback erreur
      errorCallback.accept("Erreur : " + e);
    }
  }
}

Commentaires