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

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

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

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

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

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

  回調(diào)接口: 

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

消息的發(fā)送者:

/**
 * 這個類相當(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)建一個新的線程發(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é)打電話,打完電話之后,這個線程就可以去做其他事情了,只不過等到你的同學(xué)打回電話給你的時候你要做出響應(yīng)
  } 
}

消息的接收者:

/**
 * 這個類相當(dāng)于你的同學(xué)
 */
public class Remote { 
 
  /** 
   * 處理消息 
   * @param msg  接收的消息 
   * @param callBack 回調(diào)函數(shù)處理類 
   */ 
  public void executeMessage(String msg,CallBack callBack) 
  { 
    /**模擬遠(yuǎn)程類正在處理其他事情,可能需要花費(fèi)許多時間**/ 
    for(int i=0;i<1000000000;i++) 
    { 
       
    } 
    /**處理完其他事情,現(xiàn)在來處理消息**/ 
    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)實現(xiàn)異步調(diào)用,當(dāng)消息接受者處理任務(wù)完成后去調(diào)用消息發(fā)送者的方法。

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

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

相關(guān)文章

  • Java異常處理實例教程

    Java異常處理實例教程

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

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

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

    詳解MyBatis-Puls中saveBatch批量添加慢的問題

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

    Java mockito單元測試實現(xiàn)過程解析

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

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

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

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

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

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

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

    詳解Spring系列之@ComponentScan自動掃描組件

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

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

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

    Maven中生命周期的具體使用

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

最新評論

桂平市| 德阳市| 思茅市| 鹤壁市| 三明市| 栾川县| 泗洪县| 渑池县| 平度市| 临清市| 绥芬河市| 龙陵县| 越西县| 乳山市| 鄂伦春自治旗| 聂拉木县| 区。| 古丈县| 齐齐哈尔市| 锡林浩特市| 南皮县| 深水埗区| 高安市| 东海县| 邻水| 阿合奇县| 东平县| 资中县| 达拉特旗| 南部县| 洛南县| 鄂托克前旗| 临湘市| 鹤庆县| 镇巴县| 泊头市| 增城市| 建始县| 中江县| 周口市| 诏安县|