Home  >  Article  >  Java  >  Java callback principle implementation code sharing (picture)

Java callback principle implementation code sharing (picture)

黄舟
黄舟Original
2017-03-31 10:40:071470browse

CallbackFunction, as the name suggests, is a function used for callback. The callback function is just a functional fragment, a function implemented by the user according to the callback function calling convention. The callback function is part of a workflow, and the workflow determines the timing of the function call (callback).

Callbacks should originally be a very simple concept, but maybe because we only use the interface of callbacks written by the system for us, we rarely implement callbacks, so we implement callbacks ourselves. I was still a little bit dizzy when I started, so I am writing this article to record it, and also share with you how to write a callback interface.

Callback

The concept of callback: For example, if we want to ask someone else a question, we tell the question to the other person After talking for a while, the other party said yes, when I finish this question, I will tell you that callback is used at this time, because we don't know when the other party will finish it, but the other party will take the initiative to find us after finishing it.

Synchronous callback

When the code runs to a certain location, if it encounters code that requires a callback, it will wait here and wait for the callback result to return before continuing to execute. .

Asynchronous callback

When the code is executed to the code that requires callback, it will not stop, but will continue to execute. Of course, the result of the callback may be changed after a while. Return back.

Specific code:

The overall code is still very simple. It simulates a printer and a person. The printer has the function of printing, but printing takes time. Feedback cannot be given while receiving the task, and you need to wait for a period of time before feedback can be given. All this person wants to do is print a resume and know the results of the printout. The code here implements both methods.

Callback.java

public interface Callback {
  void printFinished(String msg);
}

Printer.java

public class Printer {
  public void print(Callback callback, String text) {
    System.out.println("正在打印 . . . ");
    try {
      Thread.currentThread();
      Thread.sleep(3000);// 毫秒
    } catch (Exception e) {
    }
    callback.printFinished("打印完成");
  }
}

People.java

public class People {

  Printer printer = new Printer();

  /*
   * 同步回调
   */
  public void goToPrintSyn(Callback callback, String text) {
    printer.print(callback, text);
  }

  /*
   * 异步回调
   */
  public void goToPrintASyn(Callback callback, String text) {
    new Thread(new Runnable() {
      public void run() {
        printer.print(callback, text);
      }
    }).start();
  }
}

Main.java

public class Main {//测试类,同步回调
  public static void main(String[] args) {
    People people = new People();
    Callback callback = new Callback() {
      @Override
      public void printFinished(String msg) {
        System.out.println("打印机告诉我的消息是 ---> " + msg);
      }
    };
    System.out.println("需要打印的内容是 ---> " + "打印一份简历");
    people.goToPrintSyn(callback, "打印一份简历");
    System.out.println("我在等待 打印机 给我反馈");
  }
}

Main.java

public class Main {//异步回调
  public static void main(String[] args) {
    People people = new People();
    Callback callback = new Callback() {
      @Override
      public void printFinished(String msg) {
        System.out.println("打印机告诉我的消息是 ---> " + msg);
      }
    };
    System.out.println("需要打印的内容是 ---> " + "打印一份简历");
    people.goToPrintASyn(callback, "打印一份简历");
    System.out.println("我在等待 打印机 给我反馈");
  }
}

The above is the detailed content of Java callback principle implementation code sharing (picture). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn