Java 回調機制解讀

模塊間調用

在一個應用系統中,無論使用何種語言開發,必然存在模塊之間的調用,調用的方式分爲幾種:

(1)同步調用
圖片描述
同步調用是最基本並且最簡單的一種調用方式,類A的方法a()調用類B的方法b(),一直等待b()方法執行完畢,a()方法繼續往下走。這種調用方式適用於方法b()執行時間不長的情況,因爲b()方法執行時間一長或者直接阻塞的話,a()方法的餘下代碼是無法執行下去的,這樣會造成整個流程的阻塞。
(2)異步調用
圖片描述
異步調用是爲了解決同步調用可能出現阻塞,導致整個流程卡住而產生的一種調用方式。類A的方法方法a()通過新起線程的方式調用類B的方法b(),代碼接着直接往下執行,這樣無論方法b()執行時間多久,都不會阻塞住方法a()的執行。但是這種方式,由於方法a()不等待方法b()的執行完成,在方法a()需要方法b()執行結果的情況下(視具體業務而定,有些業務比如啓異步線程發個微信通知、刷新一個緩存這種就沒必要),必須通過一定的方式對方法b()的執行結果進行監聽。在Java中,可以使用Future+Callable的方式做到這一點,具體做法可以參見我的這篇文章《 Java多線程21:多線程下其他組件之CyclicBarrier、Callable、Future和FutureTask 》(注1)。
(3)回調
圖片描述
最後是回調,回調的思想是:

類A的a()方法調用類B的b()方法
類B的b()方法執行完畢主動調用類A的callback()方法

這樣一種調用方式組成了上圖,也就是一種雙向的調用方式。
**學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流羣,羣號碼:521352947 我們一起學Java!**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章