溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Java回調機制

發布時間:2021-06-29 16:05:21 來源:億速云 閱讀:128 作者:chen 欄目:開發技術

這篇文章主要講解了“什么是Java回調機制”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“什么是Java回調機制”吧!

一、回調

回調分為同步回調和異步回調, 假如以買彩票的場景來模擬, 我買彩票, 調用彩票網,給我返回的結果確定是否中獎,同步回調就是,我買了彩票之后, 需要等待彩票網給我返回的結果, 這個時候我不能做其他事情, 我必須等待這個結果, 這就叫同步回調, 同步, 就意味著等待, 我不能去做其他事情, 必須等待, 異步回調就是, 我買了彩票之后, 可以去做其他事情, 然后當彩票網有了結果和消息, 再給我返回消息, 其中最明顯的方式就是在得到彩票結果的函數之中, 添加一個其他的方法, 如果我的其他方法可以立即執行, 那么就是異步的(給出是否中獎需要花費很長的時間), 而在測試函數之中, 前后兩個, 那是發生在測試函數的線程之中的, 肯定是一前一后按照次序的, 在這個地方不是顯示同步異步的地點.

即我調用你的函數,你調用我的函數。通俗講是類A的函數a()調用類B的函數b(),當類B的b()函數的執行時又去調用類A里的函數a1()。是一種雙向的調用方式。一般情況下,回調分兩種,分別是同步回調異步回調。

二、同步回調

一種雙向的調用模式,被調用方在函數被調用時也會調用對方的函數,中間不做其他操作。

例如:其中CalImp屬于類A,CalLogin屬于類B。

public interface ICallBack {
    public void calResult(int a,int b,int result);
}
 
public class CalImpl implements ICallBack{
 
    private int a;
    private int b;
 
    public CalImpl(int a, int b){
        this.a = a;
        this.b = b;
    }
 
    public void calculate(){
       new CalLogic().calculateLogic(a,b,this);
    }
 
    @Override
    public void calResult(int a, int b, int result) {
        //控制臺輸出
        System.out.println(a + " + " + b + " = " + result);
    }
}
 
public class CalLogic {
 
    public void calculateLogic(int a,int b,ICallBack iCallBack){
        int result = a + b;
        System.out.println("被調用線程執行完成...");
        iCallBack.calResult(a, b, result);
    }
 
}
 
public class TestCallBack {
 
    public static void main(String[] args) {
        int a = 22;
        int b = 33;
        //實例化計算器Calculator類
        CalImpl calculator = new CalImpl(a,b);
        //調用計算器calculator的計算函數
        calculator.calculate();
        System.out.println("主線程執行完成...");
 
        //22 + 33 = 55
        //主線程執行完成...
    }
}

三、異步回調

一種類似消息或事件的機制。被調用方函數在收到某種訊息或發生某種事件(完成某個操作)時,才去調用對方的函數,即通過異步消息進行通知。

簡單來說,類A的a()函數調用類B的b()函數,但是b()函數很耗時,不確定什么時候執行完畢,如果是同步調用的話會等b()執行完成后才往下執行回調類A中的函數,如果是異步回調的話調用了b()函數,雖然b()函數沒有執行完,但a類仍然繼續往下執行,為了完成這點,就需要另開一個線程了。

例如:其中CalImp屬于類A,CalLogin屬于類B。類A中新開了一個線程執行。

輸出主線程執行完成...明明是放在代碼的最后執行的,結果卻先執行輸出了,這是因為開了另一個線程。

四、同步異步回調區別

異步回調和同步回調最大的不同就是:異步回調里新建了一個子線程。

五、異步場景

異步回調常見于請求服務器數據,當取到數據時,會進行回調。

感謝各位的閱讀,以上就是“什么是Java回調機制”的內容了,經過本文的學習后,相信大家對什么是Java回調機制這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女