最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何基于回調(diào)實(shí)現(xiàn)Java的異步調(diào)用

 更新時(shí)間:2020年06月30日 11:57:42   作者:lnlvinso  
這篇文章主要介紹了如何基于回調(diào)實(shí)現(xiàn)Java的異步調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

  異步是指調(diào)用發(fā)出后,調(diào)用者不會(huì)立刻得到結(jié)果,而是在調(diào)用發(fā)出后,被調(diào)用者通知調(diào)用者,或通過(guò)回調(diào)函數(shù)處理這個(gè)調(diào)用。

  回調(diào)簡(jiǎn)單地說(shuō)就是B中有一個(gè)A,這樣A在調(diào)用B的某個(gè)方法時(shí)實(shí)際上是調(diào)用到了自己的方法。

  利用回調(diào)可以實(shí)現(xiàn)Java的異步調(diào)用,下面的例子來(lái)自網(wǎng)上。

  回調(diào)接口: 

public interface CallBack { 
  /** 
   * 執(zhí)行回調(diào)方法 
   * @param objects  將處理后的結(jié)果作為參數(shù)返回給回調(diào)方法 
   */ 
  public void execute(Object... objects ); 
}

消息的發(fā)送者:

/**
 * 這個(gè)類相當(dāng)于你自己
 */
public class Local implements CallBack,Runnable{ 
  
  private Remote remote; 
   
  /** 
   * 發(fā)送出去的消息 
   */ 
  private String message; 
   
  public Local(Remote remote, String message) { 
    super(); 
    this.remote = remote; 
    this.message = message; 
  } 
 
  /** 
   * 發(fā)送消息 
   */ 
  public void sendMessage() 
  { 
    /**當(dāng)前線程的名稱**/ 
    System.out.println(Thread.currentThread().getName()); 
    /**創(chuàng)建一個(gè)新的線程發(fā)送消息**/ 
    Thread thread = new Thread(this); 
    thread.start(); 
    /**當(dāng)前線程繼續(xù)執(zhí)行**/ 
    System.out.println("Message has been sent by Local~!"); 
  } 
 
  /** 
   * 發(fā)送消息后的回調(diào)函數(shù) 
   */ 
  public void execute(Object... objects ) { 
    /**打印返回的消息**/ 
    System.out.println(objects[0]); 
    /**打印發(fā)送消息的線程名稱**/ 
    System.out.println(Thread.currentThread().getName()); 
    /**中斷發(fā)送消息的線程**/ 
    Thread.interrupted(); 
  } 
   
  public static void main(String[] args) 
  { 
    Local local = new Local(new Remote(),"Hello"); 
     
    local.sendMessage(); 
  } 
 
  public void run() { 
    remote.executeMessage(message, this); //這相當(dāng)于給同學(xué)打電話,打完電話之后,這個(gè)線程就可以去做其他事情了,只不過(guò)等到你的同學(xué)打回電話給你的時(shí)候你要做出響應(yīng)
  } 
}

消息的接收者:

/**
 * 這個(gè)類相當(dāng)于你的同學(xué)
 */
public class Remote { 
 
  /** 
   * 處理消息 
   * @param msg  接收的消息 
   * @param callBack 回調(diào)函數(shù)處理類 
   */ 
  public void executeMessage(String msg,CallBack callBack) 
  { 
    /**模擬遠(yuǎn)程類正在處理其他事情,可能需要花費(fèi)許多時(shí)間**/ 
    for(int i=0;i<1000000000;i++) 
    { 
       
    } 
    /**處理完其他事情,現(xiàn)在來(lái)處理消息**/ 
    System.out.println(msg); 
    System.out.println("I hava executed the message by Local"); 
    /**執(zhí)行回調(diào)**/ 
    callBack.execute(new String[]{"Nice to meet you~!"}); //這相當(dāng)于同學(xué)執(zhí)行完之后打電話給你
  } 
   
}

這樣就可以基于回調(diào)實(shí)現(xiàn)異步調(diào)用,當(dāng)消息接受者處理任務(wù)完成后去調(diào)用消息發(fā)送者的方法。

異步調(diào)用的類似實(shí)現(xiàn),當(dāng)圖片加載的比較慢時(shí),可以先加載一張模糊的圖片,當(dāng)圖片加載完成后再去進(jìn)行局部的刷新。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java異常處理實(shí)例教程

    Java異常處理實(shí)例教程

    這篇文章主要為大家分享一份非常詳細(xì)的Java異常處理實(shí)例教程,幫助大家更好的學(xué)習(xí)java異常處理,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Spring中BeanFactoryPostProcessors是如何執(zhí)行的

    Spring中BeanFactoryPostProcessors是如何執(zhí)行的

    BeanFactoryPostProcessor是Spring容器提供的一個(gè)擴(kuò)展機(jī)制,它允許開(kāi)發(fā)者在Bean的實(shí)例化和初始化之前對(duì)BeanDefinition進(jìn)行修改和處理,這篇文章主要介紹了你知道Spring中BeanFactoryPostProcessors是如何執(zhí)行的嗎,需要的朋友可以參考下
    2023-11-11
  • 詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題

    詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題

    本文主要介紹了詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析

    Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java實(shí)現(xiàn)服務(wù)器巡查的代碼

    java實(shí)現(xiàn)服務(wù)器巡查的代碼

    接到上級(jí)領(lǐng)導(dǎo)任務(wù),需要實(shí)現(xiàn)一個(gè)這樣的需求,一大批服務(wù)器,需要檢查服務(wù)器能否ping通,ssh密碼是否正常,以及檢查服務(wù)器的cpu,內(nèi)存,硬盤(pán)占用情況,下面通過(guò)java代碼實(shí)現(xiàn)服務(wù)器巡查功能,需要的朋友一起看看吧
    2021-12-12
  • dubbo如何設(shè)置連接zookeeper權(quán)限

    dubbo如何設(shè)置連接zookeeper權(quán)限

    這篇文章主要介紹了dubbo如何設(shè)置連接zookeeper權(quán)限問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java調(diào)用linux shell腳本的方法

    Java調(diào)用linux shell腳本的方法

    這篇文章主要介紹了Java調(diào)用linux shell腳本的方法,需要的朋友可以參考下
    2015-02-02
  • 詳解Spring系列之@ComponentScan自動(dòng)掃描組件

    詳解Spring系列之@ComponentScan自動(dòng)掃描組件

    這篇文章主要介紹了Spring @ComponentScan自動(dòng)掃描組件使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 一口氣說(shuō)出Java 6種延時(shí)隊(duì)列的實(shí)現(xiàn)方法(面試官也得服)

    一口氣說(shuō)出Java 6種延時(shí)隊(duì)列的實(shí)現(xiàn)方法(面試官也得服)

    這篇文章主要介紹了一口氣說(shuō)出Java 6種延時(shí)隊(duì)列的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Maven中生命周期的具體使用

    Maven中生命周期的具體使用

    在 Maven 出現(xiàn)之前,項(xiàng)目構(gòu)建的生命周期就已經(jīng)存在,本文主要介紹了Maven中生命周期的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

大余县| 旌德县| 喀什市| 正定县| 黎城县| 游戏| 朝阳县| 土默特右旗| 广南县| 乐至县| 阳谷县| 平山县| 栖霞市| 安新县| 上林县| 渑池县| 台北县| 建瓯市| 莎车县| 安康市| 嘉荫县| 惠水县| 抚顺市| 遂川县| 东丽区| 农安县| 昭通市| 尼玛县| 南部县| 三都| 商南县| 渝北区| 昌宁县| 合肥市| 临朐县| 阿瓦提县| 浦江县| 黄浦区| 清河县| 新河县| 马鞍山市|