摘要:回調(diào)函數(shù)異步回調(diào)簡明講解敘言異步回調(diào)常用于某些業(yè)務(wù)需要很長時間處理,但是又需要立刻返回結(jié)果,這種情況都需要開辟線程獨立處理需要長時間多的業(yè)務(wù),也無處理完了,回調(diào)回調(diào)函數(shù),再去處理與之有關(guān)的需要在該業(yè)務(wù)之后處理的業(yè)務(wù)。
java回調(diào)函數(shù)-異步回調(diào)-簡明講解
敘言:
異步回調(diào)常用于某些業(yè)務(wù)需要很長時間處理,但是又需要立刻返回結(jié)果,這種情況都需要開辟線程獨立處理需要長時間多的業(yè)務(wù),也無處理完了,回調(diào)回調(diào)函數(shù),再去處理與之有關(guān)的需要在該業(yè)務(wù)之后處理的業(yè)務(wù)。
之前看到網(wǎng)上說的回調(diào),雖然有很多說明,但是還是不太好理解,而且比較繁復(fù),個人感覺做的說明并不實用,故而才有了寫這篇文的想法,希望拙見能夠幫助到看此文的你。
1、網(wǎng)上有很多回調(diào)例子,對于同步回調(diào),這里就不細說了,就是在我這個異步回調(diào)的基礎(chǔ)上把線程去掉就行了。
2、網(wǎng)上說回調(diào)函數(shù)的時候,很多都是寫兩個類,一個接口,有些雖然沒有接口,但是還是兩個類,基本上都是使用兩個不同的類來做說明的,其實沒有必要,當我們需要用異步回調(diào)的時候,再去創(chuàng)建一個類,甚至一個接口,還需要實例化對象去調(diào)用方法,這種方式并不太實用。
3、我這里就是在一個類里處理完所有的回調(diào)過程,需要調(diào)用異步的時候,再原來代碼的基礎(chǔ)上添加一個線程調(diào)用需要時間處理的業(yè)務(wù)方法,再寫一個方法(回調(diào)函數(shù)),用于當需要時間處理的那個業(yè)務(wù)處理完之后,去完成之后的業(yè)務(wù)。還需要一個方法,這個方法就是用來處理需要長時間處理的業(yè)務(wù)的。其實就是在主線程的基礎(chǔ)上再開一個線程,相當于在原來代碼的基礎(chǔ)上添加三個方法就能完成異步回調(diào)。
4、下面就是我的代碼,這里用main測試的,所以方法都是static修飾的靜態(tài)方法。
public class CallBack { public static void meNeed() { //開啟線程--->點外買 new Thread(new Runnable() { @Override public void run() { //帶什么外賣 String food = "你好,請幫點一份蛋炒飯蓋飯,要辣,不要麻,要放雞精,不放味精,鹽要低鈉鹽,還要多放點蔥花"; //下單 takeouts(food); } }).start(); //玩游戲去 playGames(); } /** * @throws @Description:點完外賣,我就去玩游戲去了 */ public static void playGames() { System.err.println("我玩游戲去了"); } /** * @throws @Description:外賣送到門外,敲門提示我外賣到了,叫我去拿外賣----這個方法就是所謂的--->回調(diào)函數(shù) */ public static void callback(String message) { //這里就是需要等待之后才能進行的后續(xù)業(yè)務(wù)邏輯 System.err.println(message); } /** * @throws @Description: * @param help */ public static void takeouts(String food) { // 模擬帶外賣需要的時間 for (int i = 0; i < 10000; i++) { for (int j = 0; j < 100; j++) { for (int k = 0; k < 10000; k++) { for (int l = 0; l < 100; l++) { } } } } // 外賣送到了門口,敲門 String message = "你的外賣到了"; callback(message); } //測試回調(diào) public static void main(String[] args) { meNeed(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69374.html
摘要:瀏覽器對象可以獲取瀏覽器提供的很多對象,并進行操作。對象不但充當全局作用域,而且表示瀏覽器窗口。對象表示當前頁面的信息。由于在瀏覽器中以形式表示為樹形結(jié)構(gòu),對象就是整個樹的根節(jié)點。這個行為由瀏覽器實現(xiàn),主流瀏覽器均支持選項,從開始支持。 由于JavaScript的出現(xiàn)就是為了能在瀏覽器中運行,所以,瀏覽器自然是JavaScript開發(fā)者必須要關(guān)注的?!緦懙谋容^多,難免有疏漏的地方,希望...
摘要:瀏覽器對象可以獲取瀏覽器提供的很多對象,并進行操作。對象不但充當全局作用域,而且表示瀏覽器窗口。對象表示當前頁面的信息。由于在瀏覽器中以形式表示為樹形結(jié)構(gòu),對象就是整個樹的根節(jié)點。這個行為由瀏覽器實現(xiàn),主流瀏覽器均支持選項,從開始支持。 由于JavaScript的出現(xiàn)就是為了能在瀏覽器中運行,所以,瀏覽器自然是JavaScript開發(fā)者必須要關(guān)注的。【寫的比較多,難免有疏漏的地方,希望...
摘要:在這種方式中,主線程不會被阻塞,不需要一直等到子線程完成。主線程可以并行的執(zhí)行其他任務(wù)。如果我們不想等待結(jié)果返回,我們可以把需要等待完成執(zhí)行的邏輯寫入到回調(diào)函數(shù)中。任何立即執(zhí)行完成那就是執(zhí)行在主線程中嘗試刪除測試下。可以使用達成目的。 Java 8 有大量的新特性和增強如 Lambda 表達式,Streams,CompletableFuture等。在本篇文章中我將詳細解釋清楚Compl...
摘要:大部分人都知道回調(diào)函數(shù)在中被發(fā)揮的淋漓盡致,然而新手往往很少知道回調(diào)函數(shù)原理,所以接下來我們?nèi)砸赃@個栗子為代表探討回調(diào)函數(shù)。這就是對回調(diào)函數(shù)的簡單講解,萌新程序員,歡迎糾錯 JS的異步執(zhí)行機制 什么是異步執(zhí)行 為了提高Javascript代碼的運行效率,JS對于部分函數(shù)方法采用了異步調(diào)用機制(如Ajax的操作)。異步執(zhí)行的函數(shù)方法的執(zhí)行并非為一個隊列挨個執(zhí)行的,而是相互獨立,同時調(diào)用執(zhí)...
閱讀 2580·2021-11-18 10:02
閱讀 2085·2021-11-09 09:45
閱讀 2620·2021-09-26 09:47
閱讀 1141·2021-07-23 10:26
閱讀 1145·2019-08-30 15:47
閱讀 3432·2019-08-30 15:44
閱讀 1051·2019-08-30 15:43
閱讀 950·2019-08-29 13:50