日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

回调函数—Java实现

發布時間:2023/12/9 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回调函数—Java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 回調函數的概念

  • 同步調用
    • 一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用
  • 異步調用
    • 一種類似于消息或者時間的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方。
  • 回調
    • 一種雙向調用模式,被調用方在接口被調用時也會調用對方的接口

2 回調函數的demo

手機購買商品正常下單付款后,會反饋給用戶一個扣款成功的提醒

2.1 同步回調

//自定義Callback接口 package demo;public interface Callback {public void process(String msg); } //實現Callback接口的實現類 package demo;public class MyCallback implements Callback{@Overridepublic void process(String msg) {System.out.println("回調:" + msg);} } //客戶端 package demo;public class User {private String name;private App app;public User(String name, App app){this.name = name;this.app = app;}public void buy(String thing){System.out.println("用戶端:購買" + thing);app.order(new MyCallback(), thing); //被調用方的接口System.out.println("用戶端:物品購買中,請耐心等待");} } //服務端 package demo;public class App {public void order(Callback callback, String thing){//模擬工作System.out.println();try {System.out.println("服務端:" + thing + "下單中......");Thread.sleep(5000); //模型下單處理} catch (InterruptedException e) {e.printStackTrace();}//回調操作,反饋信息System.out.println();callback.process("扣款成功");} } //測試 package demo;public class Test {public static void main(String[] args) {App app = new App();User mx = new User("mx", app);mx.buy("可樂");} } //執行結果 用戶端:購買可樂服務端:可樂下單中......回調:扣款成功 用戶端:物品購買中,請耐心等待

其實這里可以發現,由于程序是同步運行的,所以用戶端:物品購買中,請耐心等待該執行邏輯放在了最后,但實際上是不符合常理的。在用戶確認購買后就應該執行,而不是扣完錢還要讓用戶等待。現采用異步回調修改上述User的代碼。

2.2 異步回調

package demo;public class User {private String name;private App app;public User(String name, App app){this.name = name;this.app = app;}public void buy(String thing){System.out.println("用戶端:購買" + thing);new Thread(new Runnable() {@Overridepublic void run() {app.order(new MyCallback(), thing);}}).start();System.out.println("用戶端:物品購買中,請耐心等待");} } //執行結果 用戶端:購買可樂 用戶端:物品購買中,請耐心等待服務端:可樂下單中......回調:扣款成功

總結

以上是生活随笔為你收集整理的回调函数—Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。