Java コールバック原則の実装コード共有 (図)

黄舟
リリース: 2017-03-31 10:40:07
オリジナル
1440 人が閲覧しました

CallbackFunctionは、名前が示すように、コールバックに使用される関数です。コールバック関数は単なる機能の断片であり、コールバック関数呼び出し規則に従ってユーザーによって実装される関数です。コールバック関数はワークフローの一部であり、ワークフローによって関数呼び出し (コールバック) のタイミングが決定されます。

コールバックは本来非常に単純な概念であるはずですが、おそらく私たちは通常、システムが作成したインターフェースしか使用しないため、コールバックを実装することはめったにありません。そのため、コールバックを実装するときはまだ少し混乱しています。この記事ではそれを記録し、コールバック インターフェイスの作成方法も共有します。

コールバック

コールバックの概念: たとえば、誰かに質問したいと思い、その質問を他の人に伝え、相手がOKと言ったら、私が質問を終えたら、私はそうします言っておきますが、この時にコールバックを使っているのは、相手がいつ終わるか分からないのですが、終わったら相手が率先してこちらを探してくれるからです。

同期コールバック

コードが特定の場所まで実行されるときに、コールバックを必要とするコードに遭遇すると、ここで待機し、コールバックの結果が返されるのを待ってから実行を続行します。

非同期コールバック

コールバックが必要なコードが実行されると、停止せずに実行を継続します。もちろん、しばらくしてからコールバックの結果が返される場合もあります。

具体的なコード:

全体的なコードはまだ非常に単純ですが、プリンターは印刷する機能を持っていますが、タスクを受信して​​いる間は印刷に時間がかかります。フィードバックを送信する前にしばらくお待ちください。この人がしたいのは、履歴書を印刷し、その印刷結果を知りたいだけです。ここのコードは両方のメソッドを実装しています。

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!