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