本申請涉及計算機技術(shù)領(lǐng)域,具體涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及訂單處理方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來越多的用戶開始選擇網(wǎng)絡(luò)購物,這使得電子商城等的訂單數(shù)量出現(xiàn)了飛速的增長。因此,如何高效的處理訂單成為人們關(guān)注的重要問題。
現(xiàn)有技術(shù)通常采用對訂單處理系統(tǒng)進行設(shè)定的方式進行處理訂單,使其可以每隔一定時間段對數(shù)據(jù)庫中存儲的訂單進行加載和處理。該方法要求系統(tǒng)首先將待處理的訂單加載到內(nèi)存中,而后對上述內(nèi)存中訂單逐一處理。但是,隨著訂單數(shù)量的不斷增加,采用上述方法每次都需要加載大量的訂單到內(nèi)存,這需要占用大量的內(nèi)存空間。并且,上述方法是采用的是先加載后處理的串行化方式處理訂單,效率低。
技術(shù)實現(xiàn)要素:
本申請的目的在于提出一種改進的訂單處理方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
第一方面,本申請?zhí)峁┝艘环N訂單處理方法,所述方法包括:響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;若所述數(shù)量小于預(yù)設(shè)的第一閾值,則所述生產(chǎn)者線程接收當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中;消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;若所述數(shù)量大于零,所述消費者線程從所述容器中的已有待處理訂單集合中獲取所述已有待處理訂單。
在一些實施例中,若所述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于所述第一閾值時,所述生產(chǎn)者線程不向所述容器緩存所述當前待處理訂單。
在一些實施例中,所述若所述數(shù)量小于預(yù)設(shè)的第一閾值,則所述生產(chǎn)者線程接收當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中,包括:若所述數(shù)量小于預(yù)設(shè)的第一閾值,判斷所述當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值;若是,所述生產(chǎn)者線程接收所述第二閾值的數(shù)量的當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中;若否,所述生產(chǎn)者線程接收所有的當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中。
在一些實施例中,所述若所述數(shù)量大于零,所述消費者線程從所述容器中的已有待處理訂單集合中獲取所述已有待處理訂單,包括:判斷所述數(shù)量是否大于或等于預(yù)設(shè)的第三閾值;若是,則所述消費者線程從所述容器的已有待處理訂單集合中獲取所述第三閾值的數(shù)量的已有待處理訂單;若否,則所述消費者線程獲取所述容器的已有待處理訂單集合中所有已有待處理訂單。
在一些實施例中,所述第一閾值大于所述第二閾值,且所述第一閾值大于所述第三閾值。
在一些實施例中,所述消費者線程從所述容器中的已有待處理訂單集合中獲取所述已有待處理訂單還包括:所述消費者線程判斷所述已有待處理訂單集合中是否存在處于緩存過程中的已有待處理訂單,若存在,則所述消費者線程不從所述已有待處理訂單集合中的獲取已有待處理訂單。
第二方面,本申請?zhí)峁┝艘环N訂單處理裝置,所述裝置包括:第一數(shù)量確定模塊,配置用于響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;緩存模塊,配置用于若所述數(shù)量小于預(yù)設(shè)的第一閾值,則所述生產(chǎn)者線程接收當前待處理訂單并將所述當前待 處理訂單緩存到所述容器中的所述已有待處理訂單集合中;第二數(shù)量確定模塊,配置用于消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;獲取模塊,配置用于若所述數(shù)量大于零,所述消費者線程從所述容器中的已有待處理訂單集合中獲取所述已有待處理訂單。
在一些實施例中,若所述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于所述第一閾值時,所述生產(chǎn)者線程不向所述容器緩存所述當前待處理訂單。
在一些實施例中,所述緩存模塊配置具體用于:若所述數(shù)量小于預(yù)設(shè)的第一閾值,判斷所述當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值;若是,所述生產(chǎn)者線程接收所述第二閾值的數(shù)量的當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中;若否,所述生產(chǎn)者線程接收所有的當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中。
在一些實施例中,所述獲取模塊配置具體用于:判斷所述數(shù)量是否大于或等于預(yù)設(shè)的第三閾值;若是,則所述消費者線程從所述容器的已有待處理訂單集合中獲取所述第三閾值的數(shù)量的已有待處理訂單;若否,則所述消費者線程獲取所述容器的已有待處理訂單集合中所有已有待處理訂單。
在一些實施例中,所述第一閾值大于所述第二閾值,且所述第一閾值大于所述第三閾值。
在一些實施例中,所述獲取模塊配置進一步用于:所述消費者線程判斷所述已有待處理訂單集合中是否存在處于緩存過程中的已有待處理訂單,若存在,則所述消費者線程不從所述已有待處理訂單集合中獲取已有待處理訂單。
本申請?zhí)峁┑挠唵翁幚矸椒ê脱b置,在接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求時,判斷容器已有待處理訂單的數(shù)量,在生產(chǎn)者線程確定所述數(shù)量小于預(yù)設(shè)的第一閾值的情況下,緩存接收到的當前待處理訂單到容器中的已有待處理訂單集合中,并且同時判斷消費 者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量是否大于零,在所述數(shù)量大于零的情況下,消費者線程從容器中獲取已有待處理訂單,從而通過將生產(chǎn)者緩存當前待處理訂單和消費者處理獲取的已有待處理訂單并行執(zhí)行,提高了訂單處理的效率,同時也通過設(shè)置第一閾值降低了訂單的內(nèi)存占用量。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1是本申請可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請的訂單處理方法的一個實施例的流程圖;
圖3是根據(jù)本申請的訂單處理方法的又一個實施例的流程圖;
圖4是根據(jù)本申請的訂單處理裝置的一個實施例的結(jié)構(gòu)示意圖;
圖5是適于用來實現(xiàn)本申請實施例的終端設(shè)備或服務(wù)器的計算機系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本申請作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本申請。
圖1示出了可以應(yīng)用本申請的訂單處理方法或訂單處理裝置的實施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括客戶端101,網(wǎng)絡(luò)102、104,服務(wù)器103和服務(wù)器105。網(wǎng)絡(luò)102、104用以在客戶端101、服務(wù)器103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)102、104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
在本實施例中,客戶端101作為一種電子設(shè)備,其可以為運行有多個應(yīng)用以向用戶提供線上服務(wù)的服務(wù)器,該服務(wù)器上可以設(shè)置數(shù)據(jù)庫,用于為各個終端設(shè)備(未示出)上運行的應(yīng)用所產(chǎn)生的訂單提供訂單數(shù)據(jù)存儲服務(wù)。服務(wù)器105可以對終端設(shè)備(未示出)產(chǎn)生的訂單數(shù)據(jù)進行數(shù)據(jù)分析等處理??蛻舳?01可以接收用戶在終端設(shè)備(未示出)上安裝有各種通訊客戶端應(yīng)用產(chǎn)生的訂單數(shù)據(jù),例如網(wǎng)頁瀏覽器應(yīng)用、購物類應(yīng)用、搜索類應(yīng)用、即時通信工具、郵箱客戶端、社交平臺軟件等。
服務(wù)器103可以是提供各種服務(wù)的服務(wù)器,例如對客戶端101的訂單數(shù)據(jù)提供支持的后臺服務(wù)器。后臺服務(wù)器可以對接收到的訂單等進行加載緩存處理,并將處理結(jié)果發(fā)送給服務(wù)器105。
需要說明的是,本申請實施例所提供的訂單處理方法一般由服務(wù)器103執(zhí)行,相應(yīng)地,訂單處理裝置一般設(shè)置于服務(wù)器103中。
應(yīng)該理解,圖1中的客戶端、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實現(xiàn)需要,可以具有任意數(shù)目的客戶端、網(wǎng)絡(luò)和服務(wù)器。
繼續(xù)參考圖2,其示出了根據(jù)本申請的訂單處理方法的一個實施例的流程200。所述的訂單處理方法,包括以下步驟:
步驟201,響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。
在本實施例中,訂單處理方法運行于其上的電子設(shè)備(例如圖1所示的服務(wù)器103)可以通過有線連接方式或者無線連接方式接收客戶端存儲的用戶利用終端設(shè)備進行網(wǎng)購等產(chǎn)生的當前待處理訂單。當上述電子設(shè)備接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求時,預(yù)先創(chuàng)建的生產(chǎn)者線程可以確定預(yù)先創(chuàng)建的容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。需要指出的是,上述生產(chǎn)者線程和上述消費者線程可以并列的開啟運行。這里,上述無線連接方式可以包括但不限于3g/4g連接、wifi連接、藍牙連接、wimax連接、zigbee連接、uwb(ultrawideband)連接、以及其他現(xiàn)在已知或?qū)黹_發(fā)的無線連接方式。
步驟202,若已有待處理訂單的數(shù)量小于預(yù)設(shè)的第一閾值,則生產(chǎn)者線程接收當前待處理訂單并將當前待處理訂單緩存到容器中的已有待處理訂單集合中。
在本實施例中,基于步驟201中得到的容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量,上述電子設(shè)備(例如圖1所示的服務(wù)器103)可以判斷該數(shù)量是否小于預(yù)設(shè)的第一閾值,如果該數(shù)量小于上述第一閾值,上述生產(chǎn)者線程可以接收當前待處理訂單并將上述接收的當前待處理訂單緩存到容器中的已有待處理訂單集合中。該方法通過給上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量設(shè)置一第一閾值,使得不管客戶端發(fā)送的當前待處理訂單的數(shù)量為多少,上述電子設(shè)備的內(nèi)存的占用量都不超過預(yù)設(shè)閾值,可以有效地控制上述電子設(shè)備的內(nèi)存的占用量。
在本實施例的一些可選的實現(xiàn)方式中,若上述電子設(shè)備確定上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于第一閾值時,則生產(chǎn)者線程不向上述容器緩存當前待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,當上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量小于預(yù)設(shè)的第一閾值時,則說明上述容器還可以緩存上述當前待處理訂單。此時可以繼續(xù)判斷上述當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值;若上述當前待處理訂單的數(shù)量大于或等于預(yù)設(shè)的第二閾值,則生產(chǎn)者線程可以接收第二閾值的數(shù)量的當前待處理訂單并將接收到的第二閾值數(shù)量的當前待處理訂單緩存到容器中的已有待處理訂單集合中;若上述當前待處理訂單的數(shù)量小于預(yù)設(shè)的第二閾值,則生產(chǎn)者線程可以接收所有的當前待處理訂單并將接收到的所有當前待處理訂單緩存到上述容器中的已有待處理訂單集合中。
步驟203,消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。
在本實施例中,上述消費者線程可以確定上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。這里,上述電子設(shè)備預(yù)先創(chuàng)建的消費者線程主要用于確定容器中存儲的已有待處理訂單集合 是否為空;如果該容器中存儲的已有待處理訂單集合為空,則消費者線程不能從中獲取已有待處理訂單;如果該容器中存儲的已有待處理訂單集合不為空,則消費者線程可以從中獲取已有待處理訂單。
步驟204,若已有待處理訂單的數(shù)量大于零,消費者線程從容器中的已有待處理訂單集合中獲取已有待處理訂單。
在本實施例中,基于步驟203確定的上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于零,即該容器不為空,上述消費者線程從該容器中的已有待處理訂單集合中獲取已有待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,這里的容器相當于一個公共緩沖區(qū),可以用于生產(chǎn)者線程緩存當前待處理訂單到已有待處理訂單集合中,緩存后的已有待處理訂單可以被消費者線程獲取。并且上述生產(chǎn)者線程在緩存當前待處理訂單的過程中,消費者線程可以處理已經(jīng)獲取的已有待處理訂單,這種生產(chǎn)者線程緩存訂單和消費者線程處理訂單并列執(zhí)行的方法可以有效地提高訂單處理的效率。
本申請的上述實施例提供的方法,通過給容器存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量設(shè)置閾值,降低了訂單的內(nèi)存空間的占用量,另外還通過將生產(chǎn)者線程緩存當前待處理訂單和消費者線程處理已獲取的已有待處理訂單并行執(zhí)行的方式,提高了訂單處理的效率。
進一步參考圖3,其示出了訂單處理方法的又一個實施例的流程300。該訂單處理方法的流程300,包括以下步驟:
步驟301,響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。
在本實施例中,訂單處理方法運行于其上的電子設(shè)備(例如圖1所示的服務(wù)器103)可以通過有線連接方式或者無線連接方式接收客戶端存儲的用戶利用終端設(shè)備進行網(wǎng)購等產(chǎn)生的當前待處理訂單。當上述電子設(shè)備接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求時,預(yù)先創(chuàng)建的生產(chǎn)者線程可以確定預(yù)先創(chuàng)建的容器中存儲的已有待處理訂 單集合中的已有待處理訂單的數(shù)量。
步驟302,判斷已有待處理訂單的數(shù)量是否小于預(yù)設(shè)的第一閾值。
在本實施例中,上述電子設(shè)備可以預(yù)先給容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量設(shè)置一第一閾值,該第一閾值可以根據(jù)內(nèi)存的大小進行設(shè)置?;诓襟E301確定的容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量,判斷該數(shù)量是否小于上述第一閾值,如果該數(shù)量小于上述第一閾值,則轉(zhuǎn)到步驟303,如果該數(shù)量大于或等于上述第一閾值,則轉(zhuǎn)到步驟304。
步驟303,判斷當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值。
在本實施例中,基于步驟302確定的上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量小于上述第一閾值,繼續(xù)判斷接收到的上述客戶端發(fā)送的當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值。如果當前待處理訂單的數(shù)量大于或等于預(yù)設(shè)的第二閾值,則轉(zhuǎn)到步驟305,將第二閾值數(shù)量的當前待處理訂單緩存到容器中的已有待處理訂單集合中。如果當前待處理訂單的數(shù)量小于預(yù)設(shè)的第二閾值,則轉(zhuǎn)到步驟306,將所有當前待處理訂單緩存到容器中的已有待處理訂單集合中。該步驟是在上述容器未滿的情況下,生產(chǎn)者可以將客戶端發(fā)送的當前待處理訂單分批次的緩存到容器中,有助于控制容器中的已有待處理訂單集合中已有待處理訂單的數(shù)量,可以有效地降低內(nèi)存的占用量。
步驟304,生產(chǎn)者線程不向容器緩存當前待處理訂單。
在本實施例中,基于步驟302確定的上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于上述第一閾值,則上述生產(chǎn)者線程不向容器中緩存當前待處理訂單。這里,在容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于上述第一閾值的情況下,生產(chǎn)者線程不再向上述容器中緩存當前待處理訂單,可以有效地控制容器中存儲的已有待處理訂單的數(shù)量,即可以有效地控制內(nèi)存空間的占用量。
步驟305,生產(chǎn)者線程接收第二閾值的數(shù)量的當前待處理訂單并 將接收到的當前待處理訂單緩存到容器中的已有待處理訂單集合中。
在本實施例中,基于步驟303中確定的當前待處理訂單的數(shù)量大于或等于預(yù)設(shè)的第二閾值,上述電子設(shè)備中的生產(chǎn)者線程接收第二閾值的數(shù)量的當前待處理訂單并將接收到的第二閾值數(shù)量的當前待處理訂單緩存到容器中的已有待處理訂單集合中。
在本實施例的一些可選的實現(xiàn)方式中,上述第一閾值大于上述第二閾值,即容器中已有待處理訂單集合中的數(shù)量大于生產(chǎn)者線程每次緩存的當前待處理訂單的數(shù)量。該方式在生產(chǎn)者線程緩存當前待處理訂單和消費者線程獲取已有待處理訂單并列執(zhí)行的情況下,可以將客戶端每次發(fā)送的當前待處理訂單分為若干次緩存到容器中,可以有效地降低待處理訂單對內(nèi)存的占用量。
步驟306,生產(chǎn)者線程接收所有的當前待處理訂單并將接收到的當前待處理訂單緩存到容器中的已有待處理訂單集合中。
在本實施例中,基于步驟303中確定的當前待處理訂單的數(shù)量小于預(yù)設(shè)的第二閾值,上述電子設(shè)備中的生產(chǎn)者線程接收所有的當前待處理訂單并將接收到的當前待處理訂單緩存到容器中的已有待處理訂單集合中。例如,當客戶端發(fā)送的當前待處理訂單的數(shù)量為30,而上述第二閾值為20時,上述生產(chǎn)者線程第一次可以將第二閾值數(shù)量20個當前待處理訂單緩存到容器中的已有待處理訂單集合中,此時剩余的當前待處理訂單的數(shù)量為10,可以判斷出已經(jīng)小于第二閾值,因此上述生產(chǎn)者線程第二次可以將剩余的所有的10個當前待處理訂單緩存到容器中的已有待處理訂單集合中。
步驟307,消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。
在本實施例中,上述消費者線程可以確定上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量。這里,上述電子設(shè)備預(yù)先創(chuàng)建的消費者線程還可以用于確定容器中存儲的已有待處理訂單集合是否為空;如果該容器中存儲的已有待處理訂單集合為空,則消費者線程不能從中獲取已有待處理訂單;如果該容器中存儲的已有待處理訂單集合不為空,則消費者線程可以從中獲取已有待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,上述消費者線程判斷已有待處理訂單集合中是否存在處于緩存過程中的已有待處理訂單,若存在,則消費者線程不從已有待處理訂單集合中獲取任何已有待處理訂單。
步驟308,判斷已有待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第三閾值。
在本實施例中,如果上述容器中存儲的已有待處理訂單集合如果不為空,則上述電子設(shè)備繼續(xù)判斷上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第三閾值,如果上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于預(yù)設(shè)的第三閾值,則轉(zhuǎn)到步驟309,否則轉(zhuǎn)到步驟310。
步驟309,消費者線程從容器的已有待處理訂單集合中獲取第三閾值的數(shù)量的已有待處理訂單。
在本實施例中,基于步驟308確定的上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于預(yù)設(shè)的第三閾值,上述消費者線程從容器的已有待處理訂單集合中獲取第三閾值數(shù)量的已有待處理訂單。
在本實施的一些可選的實現(xiàn)方式中,上述第一閾值可以大于上述第三閾值,即上述容器中已有待處理訂單的數(shù)量的最大值可以大于消費者線程每次獲取的已有待處理訂單的數(shù)量的最大值。
步驟310,消費者線程獲取容器的已有待處理訂單集合中所有已有待處理訂單。
在本實施例中,當上述生產(chǎn)者線程不向容器緩存當前待處理訂單時,基于步驟308確定的上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量小于預(yù)設(shè)的第三閾值,消費者線程獲取容器的已有待處理訂單集合中所有已有待處理訂單。例如,上述容器中的已有待處理訂單為30(第一閾值可以為不小于30的任意整數(shù)),而上述第三閾值為20時,上述消費者線程第一次可以從容器中獲取第三閾值數(shù)量的已有待處理訂單,此時容器中剩余的已有待處理訂單的數(shù)量為10,可以判斷出小于第三閾值20,因此上述消費者線程第二次可以獲 取容器中剩余的所有的10個已有待處理訂單。
本申請的上述實施例提供的方法,生產(chǎn)者線程分批次的緩存當前待處理訂單和消費者線程處理獲取的已有待處理訂單并列執(zhí)行,可以提高訂單處理的效率,同時給容器緩存的已有待處理訂單的數(shù)量設(shè)置第一閾值,還可以進一步的降低內(nèi)存空間的占用量。
進一步參考圖4,作為對上述各圖所示方法的實現(xiàn),本申請?zhí)峁┝艘环N訂單處理裝置的一個實施例,該裝置實施例與圖2所示的方法實施例相對應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖4所示,本實施例所述的訂單處理裝置400包括:第一數(shù)量確定模塊401、緩存模塊402、第二數(shù)量確定模塊403和獲取模塊404。其中,第一數(shù)量確定模塊401配置用于響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;緩存模塊402配置用于若上述數(shù)量小于預(yù)設(shè)的第一閾值,則生產(chǎn)者線程接收當前待處理訂單并將上述當前待處理訂單緩存到上述容器中的已有待處理訂單集合中;第二數(shù)量確定模塊403配置用于消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;獲取模塊404配置用于若上述數(shù)量大于零,消費者線程從上述容器中的已有待處理訂單集合中獲取已有待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,若上述容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量大于或等于上述第一閾值時,生產(chǎn)者線程不向容器緩存當前待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,緩存模塊402配置具體用于:若上述數(shù)量小于預(yù)設(shè)的第一閾值,判斷當前待處理訂單的數(shù)量是否大于或等于預(yù)設(shè)的第二閾值;若是,上述生產(chǎn)者線程接收第二閾值的數(shù)量的當前待處理訂單并將上述第二閾值的數(shù)量的當前待處理訂單緩存到容器中的已有待處理訂單集合中;若否,上述生產(chǎn)者線程接收所有的當前待處理訂單并將所有的當前待處理訂單緩存到容器中的已有待處理訂單集合中。
在本實施例的一些可選的實現(xiàn)方式中,獲取模塊404配置具體用 于:判斷上述數(shù)量是否大于或等于預(yù)設(shè)的第三閾值;若是,則消費者線程從容器的已有待處理訂單集合中獲取上述第三閾值的數(shù)量的已有待處理訂單;若否,則消費者線程獲取容器的已有待處理訂單集合中所有已有待處理訂單。
在本實施例的一些可選的實現(xiàn)方式中,上述第一閾值大于上述第二閾值,且上述第一閾值大于上述第三閾值。
在本實施例的一些可選的實現(xiàn)方式中,獲取模塊404配置進一步用于:上述消費者線程判斷已有待處理訂單集合中是否存在處于緩存過程中的已有待處理訂單,若存在,則消費者線程不從所述已有待處理訂單集合中獲取已有待處理訂單。
本領(lǐng)域技術(shù)人員可以理解,上述訂單處理裝置400還包括一些其他公知結(jié)構(gòu),例如處理器、存儲器等,為了不必要地模糊本公開的實施例,這些公知的結(jié)構(gòu)在圖4中未示出。
下面參考圖5,其示出了適于用來實現(xiàn)本申請實施例的終端設(shè)備或服務(wù)器的計算機系統(tǒng)500的結(jié)構(gòu)示意圖。
如圖5所示,計算機系統(tǒng)500包括中央處理單元(cpu)501,其可以根據(jù)存儲在只讀存儲器(rom)502中的程序或者從存儲部分508加載到隨機訪問存儲器(ram)503中的程序而執(zhí)行各種適當?shù)膭幼骱吞幚?。在ram503中,還存儲有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。cpu501、rom502以及ram503通過總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括鍵盤、鼠標等的輸入部分506;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等的輸出部分507;包括硬盤等的存儲部分508;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器510也根據(jù)需要連接至i/o接口505。可拆卸介質(zhì)511,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等,根據(jù)需要安裝在驅(qū)動器510上,以便于從其上讀出的計算機程序根據(jù)需要被安裝入存儲部分508。
特別地,根據(jù)本公開的實施例,上文參考流程圖描述的過程可以 被實現(xiàn)為計算機軟件程序。例如,本公開的實施例包括一種計算機程序產(chǎn)品,其包括有形地包含在機器可讀介質(zhì)上的計算機程序,所述計算機程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分509從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)511被安裝。
附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
描述于本申請實施例中所涉及到的模塊可以通過軟件的方式實現(xiàn),也可以通過硬件的方式來實現(xiàn)。所描述的模塊也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括第一數(shù)量確定模塊、緩存模塊、第二數(shù)量確定模塊和獲取模塊。其中,這些模塊的名稱在某種情況下并不構(gòu)成對該模塊本身的限定,例如,第一數(shù)量確定模塊還可以被描述為“響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單,生產(chǎn)者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量的模塊”。
作為另一方面,本申請還提供了一種非易失性計算機存儲介質(zhì),該非易失性計算機存儲介質(zhì)可以是上述實施例中所述裝置中所包含的非易失性計算機存儲介質(zhì);也可以是單獨存在,未裝配入終端中的非易失性計算機存儲介質(zhì)。上述非易失性計算機存儲介質(zhì)存儲有一個或者多個程序,當所述一個或者多個程序被一個設(shè)備執(zhí)行時,使得所述設(shè)備:響應(yīng)于接收到客戶端發(fā)送的當前待處理訂單的發(fā)送請求,生產(chǎn) 者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;若所述數(shù)量小于預(yù)設(shè)的第一閾值,則所述生產(chǎn)者線程接收當前待處理訂單并將所述當前待處理訂單緩存到所述容器中的所述已有待處理訂單集合中;消費者線程確定容器中存儲的已有待處理訂單集合中的已有待處理訂單的數(shù)量;若所述數(shù)量大于零,所述消費者線程從所述容器中的已有待處理訂單集合中獲取所述已有待處理訂單。
以上描述僅為本申請的較佳實施例以及對所運用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進行互相替換而形成的技術(shù)方案。