>  기사  >  Java  >  Java 콜백 원리 구현 코드 공유(그림)

Java 콜백 원리 구현 코드 공유(그림)

黄舟
黄舟원래의
2017-03-31 10:40:071442검색

콜백함수는 이름 그대로 콜백에 사용되는 함수입니다. 콜백 함수는 콜백 함수 호출 규칙에 따라 사용자가 구현한 함수인 기능적 단편일 뿐입니다. 콜백 함수는 워크플로의 일부이며 워크플로에 따라 함수 호출(콜백) 타이밍이 결정됩니다.

콜백은 원래 아주 간단한 개념이어야 하는데, 아무래도 우리는 시스템에서 만들어주는 콜백인터페이스만 사용하기 때문에 콜백을 구현하는 일이 거의 없어서 제가 직접 콜백을 구현합니다. 시작했을 때 여전히 약간 어지러웠기 때문에 이를 기록하고 콜백 인터페이스 작성 방법을 여러분과 공유하기 위해 이 글을 쓰고 있습니다.

콜백

콜백의 개념: 예를 들어, 다른 사람에게 질문하고 싶을 때 질문을 말합니다. 얘기를 나눈 후 상대방이 그렇다고 하더군요. 제가 이 질문을 마치면 상대방이 언제 끝낼지 모르기 때문에 이때 콜백이 사용된다는 점을 말씀드리지만 상대방은 일행은 일을 마친 후 우리를 찾기 위해 주도권을 잡을 것입니다.

동기 콜백

코드가 특정 위치로 실행될 때 콜백이 필요한 코드를 발견하면 여기에서 기다렸다가 콜백 결과가 반환될 때까지 기다립니다. 실행을 계속하기 전에.

비동기 콜백

콜백이 필요한 코드에 코드가 실행되면 멈추지 않고 계속 실행된다. 콜백은 잠시 후 변경될 수 있습니다.

특정 코드:

전체 코드는 여전히 매우 간단합니다. 프린터에는 인쇄 기능이 있지만 인쇄에는 시간이 걸립니다. 과제를 받는 중에는 피드백을 줄 수 없으며, 피드백을 받기까지 일정 시간을 기다려야 합니다. 이 사람이 원하는 것은 이력서를 인쇄하고 그 결과를 아는 것뿐입니다. 여기의 코드는 두 가지 방법을 모두 구현합니다.

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("我在等待 打印机 给我反馈");
  }
}

위 내용은 Java 콜백 원리 구현 코드 공유(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.