国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA的回調(diào)機制、同步/異步調(diào)用

這篇具有很好參考價值的文章主要介紹了JAVA的回調(diào)機制、同步/異步調(diào)用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、同步調(diào)用

同步調(diào)用是最基本的調(diào)用方式。類A的a()方法調(diào)用類B的b()方法,類A的方法需要等到B類的方法執(zhí)行完成才會繼續(xù)執(zhí)行。如果B的方法長時間阻塞,就會導致A類方法無法正常執(zhí)行下去。

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

二、異步調(diào)用

如果A調(diào)用B,B的執(zhí)行時間比較長,那么就需要考慮進行異步處理,使得B的執(zhí)行不影響A。通常在A中新起一個線程用來調(diào)用B,然后A中的代碼繼續(xù)執(zhí)行。

異步通常分兩種情況:

  • 第一,不需要調(diào)用結(jié)果,直接調(diào)用即可,比如發(fā)送通知;
  • 第二,需要異步調(diào)用結(jié)果,在Java中可使用Future+Callable實現(xiàn)。

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

三、回調(diào)

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

通常回調(diào)分為:同步回調(diào)和異步回調(diào)。

其中同步回調(diào)與同步調(diào)用類似,代碼運行到某一個位置的時候,如果遇到了需要回調(diào)的代碼,會在這里等待,等待回調(diào)結(jié)果返回后再繼續(xù)執(zhí)行。

異步回調(diào)與異步調(diào)用類似,代碼執(zhí)行到需要回調(diào)的代碼的時候,并不會停下來,而是繼續(xù)執(zhí)行,當然可能過一會回調(diào)的結(jié)果會返回回來。

1、同步回調(diào)

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

制作Callback接口

public interface Callback {
    void CallbackData(String Data);
}

自定義向小明提問的人:

public class CallbackHanler implements Callback{

    Caller caller;


    public CallbackHanler(Caller caller) {
        this.caller = caller;
    }

    @Override
    public void CallbackData(String Data) {
        Log.d("TAG!","你懂了,答案為"+Data);
    }

    public void ask(){
        caller.DoWork(this);
    }
}

大佬小明:

public class Caller {
    public void DoWork(Callback callback){
        Log.d("TAG!","小明進行自己的工作");
        try {
            Thread.sleep(5000);
            Log.d("TAG!","開始解決你的問題");
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        Log.d("TAG!","問題答案為2");
        //傳遞問題答案
        callback.CallbackData("2");
    }
}

在Main函數(shù)中調(diào)用這兩個類:

Caller caller = new Caller();
CallbackHanler callbackHanler = new CallbackHanler(caller);
callbackHanler.ask();
Log.d("TAG!","你在等待。。。。");

打印結(jié)果如下:

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

上面的實例演示了同步回調(diào),很明顯在調(diào)用的過受到Caller執(zhí)行時長的影響,需要等到Caller處理完才能繼續(xù)執(zhí)行CallbackHanler方法中的后續(xù)代碼。

2、異步回調(diào)

修改CallbackHanler的ask()方法如下:

    public void ask(){
        new Thread(()-> caller.DoWork(this)).start();
    }

打印結(jié)果如下:

JAVA的回調(diào)機制、同步/異步調(diào)用,Java,java,開發(fā)語言,回調(diào)

通過Main函數(shù)的Log.d(“TAG!”,“你在等待。。。?!?;可以知道,此時main函數(shù)沒有等待ask(),而是直接繼續(xù)執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-620673.html

到了這里,關(guān)于JAVA的回調(diào)機制、同步/異步調(diào)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Java中的同步和異步

    在Java中,同步(Synchronous)和異步(Asynchronous)是用來描述程序執(zhí)行模式的概念。 1. 同步:同步指的是按照程序的順序依次執(zhí)行代碼,每個操作都會等待前一個操作完成后再執(zhí)行。同步執(zhí)行的特點是阻塞,即某個操作的完成會導致后續(xù)操作的等待。在多線程編程中,同步可以

    2024年02月07日
    瀏覽(20)
  • Android JNI復雜用法,回調(diào),C++中調(diào)用Java方法

    Android JNI的 普通用法估計很多人都會,但是C++中調(diào)用Java方法很多人不熟悉,并且網(wǎng)上很多介紹都是片段的。 雖然C/C++調(diào)用Java不常用,但是掌握多一點還是有好處的。 Android JNI的基礎知識介紹,之前已經(jīng)有介紹,不熟悉的可以先看看: Android Jni的介紹和簡單Demo實現(xiàn): https://

    2024年03月26日
    瀏覽(26)
  • java 如何快速實現(xiàn)異步調(diào)用方法

    java 如何快速實現(xiàn)異步調(diào)用方法

    在實現(xiàn)異步調(diào)用之前,我們先了解一下,什么是異步編程?什么場景下適用等等情況。 我們都知道,在傳統(tǒng)的同步編程中,當一個操作開始執(zhí)行時, 程序會阻塞并等待該操作完成,然后才能繼續(xù)執(zhí)行后續(xù)代碼 。這種阻塞等待的方式可能會導致程序響應性能下降,因為在等待

    2024年02月15日
    瀏覽(16)
  • ZooKeeper Java API 使用教程 - 同步與異步操作示例

    ZooKeeper Java API 使用教程 - 同步與異步操作示例

    本教程詳細介紹了如何使用ZooKeeper Java API進行節(jié)點數(shù)據(jù)的同步和異步獲取。通過具體代碼示例,展示了如何連接ZooKeeper服務器,獲取子節(jié)點列表,以及如何處理節(jié)點數(shù)據(jù)變化的事件。

    2024年04月22日
    瀏覽(14)
  • 【kafka】Java客戶端代碼demo:自動異步提交、手動同步提交及提交顆粒度、動態(tài)負載均衡

    【kafka】Java客戶端代碼demo:自動異步提交、手動同步提交及提交顆粒度、動態(tài)負載均衡

    kafka版本為3.6,部署在3臺linux上。 maven依賴如下: 生產(chǎn)者、消費者和topic代碼如下: 這里先簡單解釋一下, kafka的topic只是一個邏輯上的概念,實際上的物理存儲是依賴分布在broker中的分區(qū)partition來完成的 。kafka依賴的zk中有一個 __consumer_offsets [1]話題,存儲了所有consumer和g

    2024年01月19日
    瀏覽(27)
  • kafka生產(chǎn)者異步發(fā)送、同步發(fā)送、回調(diào)異步發(fā)送,是什么情況?

    kafka生產(chǎn)者異步發(fā)送、同步發(fā)送、回調(diào)異步發(fā)送,是什么情況?

    Kafka是一種分布式流處理平臺 ,它是一種高吞吐量、可擴展、可持久化的消息隊列系統(tǒng),用于處理和存儲實時流式數(shù)據(jù)。 Kafka基于發(fā)布-訂閱模式,采用了分布式、多副本、分區(qū)的架構(gòu)。它允許生產(chǎn)者將數(shù)據(jù)以消息的形式發(fā)送到Kafka集群的一個或多個主題(topic)中,而消費者可以

    2024年02月15日
    瀏覽(34)
  • kafka入門,生產(chǎn)者異步發(fā)送、回調(diào)函數(shù),同步發(fā)送(四)

    引入依賴 回調(diào)函數(shù)會在producer收到ack時調(diào)用,該方法有兩個參數(shù),分別是元數(shù)據(jù)信息(RecordMetadata)和異常信息(Exception),如果Exception為null,說明信息發(fā)送失敗 注意:消息發(fā)送失敗會自動重試,不需要我們在回調(diào)函數(shù)中手動重試。 只需在異步發(fā)送的基礎上,再調(diào)用一下 get(

    2024年02月11日
    瀏覽(29)
  • Elasticsearch“滾動查詢“(Scrolling)的機制的與Java使用ES Client 調(diào)用滾動查詢

    Elasticsearch“滾動查詢“(Scrolling)的機制的與Java使用ES Client 調(diào)用滾動查詢

    ES在進行普通的查詢時,默認只會查詢出來10條數(shù)據(jù)。我們通過設置es中的size可以將最終的查詢結(jié)果從10增加到10000。如果需要查詢數(shù)據(jù)量大于es的翻頁限制或者需要將es的數(shù)據(jù)進行導出又當如何? Elasticsearch提供了一種稱為 \\\"滾動查詢\\\"(Scrolling) 的機制,用于處理大型數(shù)據(jù)集的

    2024年02月11日
    瀏覽(18)
  • Java開發(fā) - 深入理解Redis哨兵機制原理

    Java開發(fā) - 深入理解Redis哨兵機制原理

    Redis的主從、哨兵模式、集群模式,在前文中都已經(jīng)有了詳細的搭建流程,可謂是手把手教程,也得到了很多朋友的喜歡。由于前文偏向于應用方面,就導致了理論知識的匱乏,我們可能會用了,但卻不明所以,所以今天,博主就通過接下里的幾篇博客給大家分別講解Redis哨兵

    2024年02月17日
    瀏覽(30)
  • Java開發(fā)或調(diào)用WebService的幾種方式

    Java開發(fā)或調(diào)用WebService的幾種方式

    1.服務端開發(fā)與發(fā)布 編寫接口 編寫接口的實現(xiàn)類 發(fā)布服務 訪問已發(fā)布的WebService服務 打開瀏覽器輸入http://127.0.0.1:8888/JaxWSTest?wsdl訪問,如下面內(nèi)容 截圖內(nèi)容1 瀏覽器中輸入wsdl文檔中的 http://127.0.0.1:8888/JaxWSTest?xsd=1可查看綁定的參數(shù)等信息看如下圖: 截圖內(nèi)容2 jdk自帶生成W

    2024年01月17日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包