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