模塊間的調(diào)用關(guān)系
在一個應(yīng)用系統(tǒng)中,無論使用何種語言開發(fā),必然會存在模塊之間的調(diào)用,調(diào)用的方式主要包含:
同步調(diào)用
同步調(diào)用是最基本也是最簡單的調(diào)用方式,類A的方法a在調(diào)用類B的方法b,會一直等待b方法執(zhí)行完成,方法a才進(jìn)行后續(xù)的代碼執(zhí)行。這種方式一般使用這種方式適用于方法b執(zhí)行的時間不長的情況下,因為如果方法b執(zhí)行的時間過長,方法a余下的代碼邏輯是無法執(zhí)行下去的,這樣會造成整個流程的阻塞
異步調(diào)用
異步調(diào)用是為了解決同步調(diào)用可能出現(xiàn)的阻塞問題,類A的方法a通過新起線程的方式調(diào)用類B的b方法,代碼接著直接繼續(xù)往下執(zhí)行,無需等待b方法的執(zhí)行結(jié)果。這樣無論方法b執(zhí)行時間多久,都不會阻塞方法a的執(zhí)行。但是這種方式下的調(diào)用關(guān)系,由于方法a無需等待方法b的執(zhí)行完成,如果方法a中需要使用到方法b的執(zhí)行結(jié)果,必須通過一定的方式對方法b的執(zhí)行結(jié)果進(jìn)行監(jiān)聽。在Java中,可以使用Future+Callable的方式實現(xiàn)
回調(diào)
回調(diào)的思想在于:
- 類A的方法a調(diào)用類B的b方法
- 類B的b方法執(zhí)行完畢主動調(diào)用類A的callback方法
這樣的調(diào)用方式是一種雙向的調(diào)用方式,其核心是回調(diào)方將本身即this傳遞給調(diào)用方,這樣調(diào)用方就可以在調(diào)用完畢之后告訴回調(diào)方它想要的信息。