欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

總結(jié)一下Java回調(diào)機(jī)制的相關(guān)知識(shí)

 更新時(shí)間:2021年06月29日 14:16:23   作者:CodingALife  
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java回調(diào)機(jī)制展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下

一、回調(diào)

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

即我調(diào)用你的函數(shù),你調(diào)用我的函數(shù)。通俗講是類(lèi)A的函數(shù)a()調(diào)用類(lèi)B的函數(shù)b(),當(dāng)類(lèi)B的b()函數(shù)的執(zhí)行時(shí)又去調(diào)用類(lèi)A里的函數(shù)a1()。是一種雙向的調(diào)用方式。一般情況下,回調(diào)分兩種,分別是同步回調(diào)異步回調(diào)。

二、同步回調(diào)

一種雙向的調(diào)用模式,被調(diào)用方在函數(shù)被調(diào)用時(shí)也會(huì)調(diào)用對(duì)方的函數(shù),中間不做其他操作。

例如:其中CalImp屬于類(lèi)A,CalLogin屬于類(lèi)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) {
        //控制臺(tái)輸出
        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("被調(diào)用線(xiàn)程執(zhí)行完成...");
        iCallBack.calResult(a, b, result);
    }
 
}
 
public class TestCallBack {
 
    public static void main(String[] args) {
        int a = 22;
        int b = 33;
        //實(shí)例化計(jì)算器Calculator類(lèi)
        CalImpl calculator = new CalImpl(a,b);
        //調(diào)用計(jì)算器calculator的計(jì)算函數(shù)
        calculator.calculate();
        System.out.println("主線(xiàn)程執(zhí)行完成...");
 
        //22 + 33 = 55
        //主線(xiàn)程執(zhí)行完成...
    }
}

三、異步回調(diào)

一種類(lèi)似消息或事件的機(jī)制。被調(diào)用方函數(shù)在收到某種訊息或發(fā)生某種事件(完成某個(gè)操作)時(shí),才去調(diào)用對(duì)方的函數(shù),即通過(guò)異步消息進(jìn)行通知。

簡(jiǎn)單來(lái)說(shuō),類(lèi)A的a()函數(shù)調(diào)用類(lèi)B的b()函數(shù),但是b()函數(shù)很耗時(shí),不確定什么時(shí)候執(zhí)行完畢,如果是同步調(diào)用的話(huà)會(huì)等b()執(zhí)行完成后才往下執(zhí)行回調(diào)類(lèi)A中的函數(shù),如果是異步回調(diào)的話(huà)調(diào)用了b()函數(shù),雖然b()函數(shù)沒(méi)有執(zhí)行完,但a類(lèi)仍然繼續(xù)往下執(zhí)行,為了完成這點(diǎn),就需要另開(kāi)一個(gè)線(xiàn)程了。

例如:其中CalImp屬于類(lèi)A,CalLogin屬于類(lèi)B。類(lèi)A中新開(kāi)了一個(gè)線(xiàn)程執(zhí)行。

輸出主線(xiàn)程執(zhí)行完成...明明是放在代碼的最后執(zhí)行的,結(jié)果卻先執(zhí)行輸出了,這是因?yàn)殚_(kāi)了另一個(gè)線(xiàn)程。

四、同步異步回調(diào)區(qū)別

異步回調(diào)和同步回調(diào)最大的不同就是:異步回調(diào)里新建了一個(gè)子線(xiàn)程。

五、異步場(chǎng)景

異步回調(diào)常見(jiàn)于請(qǐng)求服務(wù)器數(shù)據(jù),當(dāng)取到數(shù)據(jù)時(shí),會(huì)進(jìn)行回調(diào)。

到此這篇關(guān)于總結(jié)一下Java回調(diào)機(jī)制相關(guān)知識(shí)的文章就介紹到這了,更多相關(guān)Java回調(diào)機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot事務(wù)異步調(diào)用引發(fā)的bug解決

    SpringBoot事務(wù)異步調(diào)用引發(fā)的bug解決

    本文主要介紹了SpringBoot事務(wù)異步調(diào)用引發(fā)的bug解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解java基于MyBatis使用示例

    詳解java基于MyBatis使用示例

    這篇文章主要介紹了詳解java基于MyBatis使用示例,對(duì)學(xué)習(xí)MyBatis有一定的幫助,有需要的可以了解一下。
    2016-11-11
  • MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹

    MybatisPlus中的刪除和邏輯刪除及區(qū)別介紹

    這篇文章主要介紹了MybatisPlus中的刪除和邏輯刪除的相關(guān)知識(shí),刪除又分為邏輯刪除和物理刪除,那么它們有什么區(qū)別呢?在本文給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • 使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖)

    使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖)

    用Jfree實(shí)現(xiàn)條形柱狀圖表,java代碼實(shí)現(xiàn)??山?jīng)常用于報(bào)表的制作,代碼自動(dòng)生成后可以自由查看。可以自由配置圖表的各個(gè)屬性,用來(lái)達(dá)到自己的要求和目的。本文給大家介紹使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖),需要的朋友可以參考下
    2015-10-10
  • idea?maven依賴(lài)引入失效無(wú)法正常導(dǎo)入依賴(lài)問(wèn)題的解決方法

    idea?maven依賴(lài)引入失效無(wú)法正常導(dǎo)入依賴(lài)問(wèn)題的解決方法

    有時(shí)候idea導(dǎo)入一個(gè)新項(xiàng)目,或者pom文件修改(新增)了依賴(lài),pom文件和代碼會(huì)報(bào)紅,提示依賴(lài)包不存在,下面這篇文章主要給大家介紹了關(guān)于idea?maven依賴(lài)引入失效無(wú)法正常導(dǎo)入依賴(lài)問(wèn)題的解決方法,需要的朋友可以參考下
    2023-04-04
  • Java入門(mén)交換數(shù)組中兩個(gè)元素的位置

    Java入門(mén)交換數(shù)組中兩個(gè)元素的位置

    在Java中,交換數(shù)組中的兩個(gè)元素是基本的數(shù)組操作,下面我們將詳細(xì)介紹如何實(shí)現(xiàn)這一操作,以及在實(shí)際應(yīng)用中這種技術(shù)的重要性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • springboot讀取nacos配置文件的實(shí)現(xiàn)

    springboot讀取nacos配置文件的實(shí)現(xiàn)

    SpringBoot注冊(cè)服務(wù)到Nacos上,由Nacos來(lái)做服務(wù)的管理,本文主要介紹了springboot讀取nacos配置文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • JVM雙親委派模型知識(shí)詳細(xì)總結(jié)

    JVM雙親委派模型知識(shí)詳細(xì)總結(jié)

    今天帶各位小伙伴學(xué)習(xí)Java虛擬機(jī)的相關(guān)知識(shí),文中對(duì)JVM雙親委派模型作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java中id,pid格式數(shù)據(jù)轉(zhuǎn)樹(shù)和森林結(jié)構(gòu)工具類(lèi)實(shí)現(xiàn)

    Java中id,pid格式數(shù)據(jù)轉(zhuǎn)樹(shù)和森林結(jié)構(gòu)工具類(lèi)實(shí)現(xiàn)

    本文主要介紹了Java中id,pid格式數(shù)據(jù)轉(zhuǎn)樹(shù)和森林結(jié)構(gòu)工具類(lèi)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • restTemplate未設(shè)置連接數(shù)導(dǎo)致服務(wù)雪崩問(wèn)題以及解決

    restTemplate未設(shè)置連接數(shù)導(dǎo)致服務(wù)雪崩問(wèn)題以及解決

    面對(duì)線(xiàn)上問(wèn)題,仔細(xì)分析原因,及時(shí)調(diào)整配置,能有效解決問(wèn)題,本文詳細(xì)描述了線(xiàn)上遇到流量突增引發(fā)的問(wèn)題,通過(guò)查看代碼和連接池信息,分析出問(wèn)題的原因是連接池滿(mǎn)了,連接池大小配置不足以應(yīng)對(duì)大并發(fā)流量,通過(guò)調(diào)整連接池大小配置
    2024-10-10

最新評(píng)論