本發(fā)明涉及線程管理領(lǐng)域,尤其涉及線程管理方法及裝置。
背景技術(shù):
目前,針對產(chǎn)品檢測的任務(wù)線程分配技術(shù)中,通常都是來一個(gè)檢測任務(wù)就新建一條檢測線程,同時(shí)現(xiàn)有技術(shù)中,對于先開啟的檢測線程即使已經(jīng)完成了檢測任務(wù),該檢測線程也仍然處于開啟狀態(tài)。因此,如果同時(shí)產(chǎn)生的新檢測任務(wù)過多且依然采用新建檢測線程來分配處理的話,那么將會(huì)導(dǎo)致后臺(tái)資源被大量占用,進(jìn)而嚴(yán)重影響產(chǎn)品檢測的效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提供一種線程管理方法及裝置,旨在解決現(xiàn)有技術(shù)中無限次的新建并分配檢測線程,進(jìn)而導(dǎo)致后臺(tái)資源被大量占用而嚴(yán)重影響產(chǎn)品檢測效率的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種線程管理方法,應(yīng)用于產(chǎn)品檢測,所述線程管理方法包括:
步驟S1、監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù);
步驟S2、若當(dāng)前存在空閑的線程且不存在新的產(chǎn)品檢測任務(wù),則休眠該空閑的線程;
步驟S3、若當(dāng)前不存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則判斷當(dāng)前是否存在休眠的線程;
步驟S4、若當(dāng)前存在休眠的線程,則喚醒當(dāng)前休眠的線程,并將喚醒的線程分配給該新的產(chǎn)品檢測任務(wù);
步驟S5、執(zhí)行步驟S1直至產(chǎn)品檢測停止時(shí)退出。
優(yōu)選地,所述監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù)之后包括:
若當(dāng)前存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則將該空閑的線程分配給該新的產(chǎn)品檢測任務(wù)。
優(yōu)選地,所述監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù)之前包括:
建立固定數(shù)量的用于執(zhí)行產(chǎn)品檢測任務(wù)的線程。
優(yōu)選地,所述若當(dāng)前不存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則判斷當(dāng)前是否存在休眠的線程之后包括:
若當(dāng)前不存在休眠的線程,則將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中。
優(yōu)選地,所述若當(dāng)前不存在休眠的線程,則將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中之后包括:
監(jiān)測當(dāng)前是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程;
若存在,則從所述任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該線程分配給該取出的產(chǎn)品檢測任務(wù)。
為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種線程管理裝置,應(yīng)用于產(chǎn)品檢測,所述線程管理裝置包括:
監(jiān)測模塊,用于監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù);
休眠模塊,用于在當(dāng)前存在空閑的線程且不存在新的產(chǎn)品檢測任務(wù)時(shí),休眠該空閑的線程;
判斷模塊,用于在當(dāng)前不存在空閑的線程且存在新的產(chǎn)品檢測任務(wù)時(shí),判斷當(dāng)前是否存在休眠的線程;
喚醒模塊,用于在當(dāng)前存在休眠的線程時(shí),喚醒當(dāng)前休眠的線程;
分配模塊,用于將喚醒的線程分配給該新的產(chǎn)品檢測任務(wù)。
優(yōu)選地,所述分配模塊還用于:
在當(dāng)前存在空閑的線程且存在新的產(chǎn)品檢測任務(wù)時(shí),將該空閑的線程分配給該新的產(chǎn)品檢測任務(wù)。
優(yōu)選地,所述線程管理裝置還包括:
線程模塊,用于建立固定數(shù)量的用于執(zhí)行產(chǎn)品檢測任務(wù)的線程。
優(yōu)選地,所述線程管理裝置還包括:
緩存模塊,用于在當(dāng)前不存在休眠的線程時(shí),將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中。
優(yōu)選地,所述監(jiān)測模塊還用于:監(jiān)測當(dāng)前是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程;
所述分配模塊還用于:在當(dāng)前存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程時(shí),從所述任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該線程分配給該取出的產(chǎn)品檢測任務(wù)。
本發(fā)明中,當(dāng)產(chǎn)品檢測任務(wù)較少時(shí),休眠空閑的線程。而當(dāng)產(chǎn)品檢測任務(wù)較多時(shí),若不存在空閑的線程而存在休眠的線程,則將之前休眠的線程喚醒并分配給當(dāng)前的檢測任務(wù),進(jìn)而可對線程的分配進(jìn)行干預(yù)以防止線程的無限增加而導(dǎo)致后臺(tái)資源被大量占用致使產(chǎn)品檢測速度下降,從而相對提升了產(chǎn)品檢測的速度與效率。
附圖說明
圖1為本發(fā)明線程管理方法一實(shí)施例的流程示意圖;
圖2為本發(fā)明線程管理裝置第一實(shí)施例的功能模塊示意圖;
圖3為本發(fā)明線程管理裝置第二實(shí)施例的功能模塊示意圖;
圖4為本發(fā)明線程管理裝置第三實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
參照圖1,圖1為本發(fā)明線程管理方法一實(shí)施例的流程示意圖。本實(shí)施例中,線程管理方法包括:
步驟S10,監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù);
本實(shí)施例中,對于監(jiān)測方式,既可以是實(shí)時(shí)監(jiān)測,也可以是每隔預(yù)設(shè)時(shí)長進(jìn)行一次監(jiān)測,同時(shí)對于預(yù)設(shè)時(shí)長的設(shè)置不限,比如每隔1分鐘、10分鐘等。本實(shí)施例中,線程具體用于執(zhí)行產(chǎn)品檢測任務(wù)。
本實(shí)施例中,空閑的線程具體是指沒有執(zhí)行產(chǎn)品檢測任務(wù)的線程,比如從一開始就沒有執(zhí)行產(chǎn)品檢測任務(wù)的線程,或者在執(zhí)行完產(chǎn)品檢測任務(wù)后處于待分配狀態(tài)的線程。此外,本實(shí)施例中對于檢測空閑的線程的方式不限,比如根據(jù)線程的運(yùn)行狀態(tài)進(jìn)行確定等。
本實(shí)施例中,產(chǎn)品檢測任務(wù)具體是指對產(chǎn)品進(jìn)行檢測的工作任務(wù),其中,產(chǎn)品檢測任務(wù)既可以是針對整個(gè)產(chǎn)品檢測而言的,也可以是只針對產(chǎn)品的某個(gè)檢測環(huán)節(jié)而言的。同時(shí),對于產(chǎn)品檢測任務(wù)的具體內(nèi)容及形式不限,比如為指令、為程序包等。此外,本實(shí)施例中對于監(jiān)測產(chǎn)品檢測任務(wù)的監(jiān)測形式不限,比如監(jiān)測是否存在任務(wù)指令。
步驟S20,若當(dāng)前存在空閑的線程且不存在新的產(chǎn)品檢測任務(wù),則休眠該空閑的線程;
本實(shí)施例中,當(dāng)檢測到空閑的線程時(shí),由于當(dāng)前不存在產(chǎn)品檢測任務(wù),因此,無需分配該空閑的檢測線程,同時(shí)為避免線程開啟而占用后臺(tái)資源,因此,本實(shí)施例中,在不存在產(chǎn)品檢測任務(wù)時(shí),對空閑的線程進(jìn)行休眠處理。本實(shí)施例中對于休眠線程的方式不限,具體根據(jù)實(shí)際需要進(jìn)行設(shè)置。需要說明的是,休眠的線程可以在滿足條件時(shí)而被喚醒。
步驟S30,若當(dāng)前不存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則判斷當(dāng)前是否存在休眠的線程;
步驟S40,若當(dāng)前存在休眠的線程,則喚醒當(dāng)前休眠的線程,并將喚醒的線程分配給該新的產(chǎn)品檢測任務(wù);
本實(shí)施例中,當(dāng)監(jiān)測到新的產(chǎn)品檢測任務(wù)時(shí)并不建立新的線程來執(zhí)行該產(chǎn)品檢測任務(wù),而是進(jìn)一步確定是否存在空閑的線程以及休眠的線程,如果當(dāng)前不存在空閑的線程而存在休眠的線程,則可以喚醒處于休眠狀態(tài)的線程,并將該喚醒后的線程分配給該新的產(chǎn)品檢測任務(wù),進(jìn)而避免重新新建線程而對后臺(tái)資源的占用,同時(shí),在線程數(shù)量一定的情況下,既保證了后臺(tái)資源的高效利用,同時(shí)也提升了線程的使用效率。
例如,有A、B、C、D四個(gè)線程,其中,在間隔時(shí)間點(diǎn)T處檢測到線程A處于空閑狀態(tài),而線程B、C、D處于執(zhí)行產(chǎn)品檢測任務(wù)的工作狀態(tài),則休眠線程A,同時(shí)在線程A處于休眠期間,監(jiān)測是否存在新的產(chǎn)品檢測任務(wù)以及新的空閑線程(比如B、C、D任一個(gè)或多個(gè)),如果監(jiān)測到新的產(chǎn)品檢測任務(wù),但同時(shí)不存在空閑的線程(也即B、C、D仍然處于工作狀態(tài)),則將線程A喚醒,并將線程A分配給當(dāng)前新的產(chǎn)品檢測任務(wù)。
步驟S50,若當(dāng)前存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則將該空閑的線程分配給該新的產(chǎn)品檢測任務(wù)。
例如,在線程A處于休眠期間且未達(dá)到下一間隔時(shí)間點(diǎn)時(shí),監(jiān)測到新的產(chǎn)品檢測任務(wù),同時(shí),存在空閑的線程B,則直接將線程B分配給該新的產(chǎn)品檢測任務(wù)而無需喚醒線程A,進(jìn)而進(jìn)一步降低對后臺(tái)資源的占用。
步驟S60,執(zhí)行步驟S10直至產(chǎn)品檢測停止時(shí)退出。
本實(shí)施例中,當(dāng)產(chǎn)品檢測任務(wù)較少時(shí),休眠空閑的線程。而當(dāng)產(chǎn)品檢測任務(wù)較多時(shí),若不存在空閑的線程而存在休眠的線程,則將之前休眠的線程喚醒并分配給當(dāng)前的檢測任務(wù),進(jìn)而可對線程的分配進(jìn)行干預(yù)以防止線程的無限增加而導(dǎo)致后臺(tái)資源被大量占用致使產(chǎn)品檢測速度下降,從而相對提升了產(chǎn)品檢測的速度與效率。
進(jìn)一步可選的,在本發(fā)明線程管理方法一實(shí)施例中,在上述步驟S10之前進(jìn)一步包括:建立固定數(shù)量的用于執(zhí)行產(chǎn)品檢測任務(wù)的線程。
本實(shí)施例中,在開始進(jìn)行產(chǎn)品檢測之前,預(yù)先建立固定數(shù)量的檢測線程,同時(shí)所有線程都處于可分配狀態(tài)。比如預(yù)先建立20條檢測線程,同時(shí)開始每隔預(yù)設(shè)時(shí)長進(jìn)行空閑線程的檢測,例如,在間隔時(shí)長內(nèi)若不存在空閑線程,則不進(jìn)行休眠處理,而在間隔時(shí)長內(nèi)若存在空閑的線程時(shí),則休眠該空閑的線程。
本實(shí)施例中,通過預(yù)先建立固定數(shù)量的檢測線程,從而避免線程無限次新建而導(dǎo)致后臺(tái)資源被嚴(yán)重占用后使得產(chǎn)品檢測速度下降的問題。
進(jìn)一步可選的,在本發(fā)明線程管理方法一實(shí)施例中,上述步驟S30之后包括:若當(dāng)前不存在休眠的線程,則將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中。
本實(shí)施例中,若當(dāng)前正在執(zhí)行產(chǎn)品檢測任務(wù)的檢測線程的總數(shù)達(dá)到預(yù)設(shè)建立的線程的固定數(shù)量,也即當(dāng)前不存在空閑的線程以及休眠的線程時(shí),此時(shí)若新建線程,則可能導(dǎo)致后臺(tái)資源被大量占用而降低產(chǎn)品檢測速度,因此,通過預(yù)先建立的任務(wù)隊(duì)列來緩存當(dāng)前產(chǎn)生的新的產(chǎn)品檢測任務(wù)。需要說明的是,本實(shí)施例中對于任務(wù)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)形式不限,比如單向鏈表結(jié)構(gòu)、雙向鏈表結(jié)構(gòu)等。
例如,在進(jìn)行產(chǎn)品檢測之前,預(yù)先建立多個(gè)線程,比如預(yù)先建立20條檢測線程,則每產(chǎn)生一條產(chǎn)品檢測任務(wù)則對應(yīng)分配一條線程,而若當(dāng)前已建立的線程已經(jīng)分配完畢,則將當(dāng)前產(chǎn)生的新的產(chǎn)品檢測任務(wù)緩存至任務(wù)隊(duì)列中,從而等待線程空閑時(shí)再行分配。
本實(shí)施例中,通過預(yù)先建立固定數(shù)量的線程,從而避免線程無限次新建而導(dǎo)致后臺(tái)資源被嚴(yán)重占用后使得產(chǎn)品檢測速度下降的問題,同時(shí),在固定數(shù)量的線程被全部占用時(shí),通過任務(wù)隊(duì)列以緩存其他新的產(chǎn)品檢測任務(wù),進(jìn)而在減少產(chǎn)品檢測任務(wù)處理量的同時(shí),相對提升產(chǎn)品的檢測速度。
進(jìn)一步可選的,在本發(fā)明線程管理方法另一實(shí)施例中,將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中之后進(jìn)一步包括:
監(jiān)測當(dāng)前是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程;
若存在,則從任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該線程分配給該取出的產(chǎn)品檢測任務(wù),其中,當(dāng)任務(wù)隊(duì)列為空時(shí)返回執(zhí)行步驟S10。
本實(shí)施例中,在任務(wù)隊(duì)列中緩存產(chǎn)品檢測任務(wù)的同時(shí),監(jiān)測當(dāng)前已分配的線程中是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的空閑線程,如果存在空閑的線程,也即存在可分配的線程時(shí),從任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該空閑的檢測線程分配給該取出的產(chǎn)品檢測任務(wù)。
例如,預(yù)先建立了A、B、C、D四條線程,如果該四條線程都依次被分配了產(chǎn)品檢測任務(wù),則當(dāng)檢測到新的產(chǎn)品檢測任務(wù)時(shí),將產(chǎn)品檢測任務(wù)緩存到任務(wù)隊(duì)列中,同時(shí)監(jiān)測A、B、C、D四條線程是否已執(zhí)行完產(chǎn)品檢測任務(wù),假設(shè)A線程執(zhí)行完了檢測任務(wù),則可將任務(wù)隊(duì)列的隊(duì)首所對應(yīng)的產(chǎn)品檢測任務(wù)取出,并將A線程分配給該取出的產(chǎn)品檢測任務(wù),從而無需再次新建新的檢測任務(wù),進(jìn)而防止檢測線程的無限增加而導(dǎo)致后臺(tái)資源被大量占用致使產(chǎn)品檢測速度下降,從而相對提升了產(chǎn)品檢測的速度與效率。
參照圖2,圖2為本發(fā)明線程管理裝置第一實(shí)施例的功能模塊示意圖。本實(shí)施例中,線程管理裝置包括:
監(jiān)測模塊10,用于監(jiān)測當(dāng)前是否存在空閑的線程以及新的產(chǎn)品檢測任務(wù);
本實(shí)施例中,對于監(jiān)測方式,既可以是實(shí)時(shí)監(jiān)測,也可以是每隔預(yù)設(shè)時(shí)長進(jìn)行一次監(jiān)測,同時(shí)對于預(yù)設(shè)時(shí)長的設(shè)置不限,比如每隔1分鐘、10分鐘等。本實(shí)施例中,線程具體用于執(zhí)行產(chǎn)品檢測任務(wù)。
本實(shí)施例中,空閑的線程具體是指沒有執(zhí)行產(chǎn)品檢測任務(wù)的線程,比如從一開始就沒有執(zhí)行產(chǎn)品檢測任務(wù)的線程,或者在執(zhí)行完產(chǎn)品檢測任務(wù)后處于待分配狀態(tài)的線程。此外,本實(shí)施例中對于檢測空閑的線程的方式不限,比如根據(jù)線程的運(yùn)行狀態(tài)進(jìn)行確定等。
本實(shí)施例中,產(chǎn)品檢測任務(wù)具體是指對產(chǎn)品進(jìn)行檢測的工作任務(wù),其中,產(chǎn)品檢測任務(wù)既可以是針對整個(gè)產(chǎn)品檢測而言的,也可以是只針對產(chǎn)品的某個(gè)檢測環(huán)節(jié)而言的。同時(shí),對于產(chǎn)品檢測任務(wù)的具體內(nèi)容及形式不限,比如為指令、為程序包等。此外,本實(shí)施例中對于監(jiān)測產(chǎn)品檢測任務(wù)的監(jiān)測形式不限,比如監(jiān)測是否存在任務(wù)指令。
休眠模塊20,用于在當(dāng)前存在空閑的線程且不存在新的產(chǎn)品檢測任務(wù)時(shí),休眠該空閑的線程;
本實(shí)施例中,當(dāng)檢測到空閑的線程時(shí),由于當(dāng)前不存在產(chǎn)品檢測任務(wù),因此,無需分配該空閑的檢測線程,同時(shí)為避免線程開啟而占用后臺(tái)資源,因此,本實(shí)施例中,在不存在產(chǎn)品檢測任務(wù)時(shí),對空閑的線程進(jìn)行休眠處理。本實(shí)施例中對于休眠線程的方式不限,具體根據(jù)實(shí)際需要進(jìn)行設(shè)置。需要說明的是,休眠的線程可以在滿足條件時(shí)而被喚醒。
判斷模塊30,用于在當(dāng)前不存在空閑的線程且存在新的產(chǎn)品檢測任務(wù)時(shí),判斷當(dāng)前是否存在休眠的線程;
喚醒模塊40,用于在當(dāng)前存在休眠的線程時(shí),喚醒當(dāng)前休眠的線程;
分配模塊50,用于將喚醒的線程分配給該新的產(chǎn)品檢測任務(wù)。
本實(shí)施例中,當(dāng)監(jiān)測到新的產(chǎn)品檢測任務(wù)時(shí)并不建立新的線程來執(zhí)行該產(chǎn)品檢測任務(wù),而是進(jìn)一步確定是否存在空閑的線程以及休眠的線程,如果當(dāng)前不存在空閑的線程而存在休眠的線程,則可以喚醒處于休眠狀態(tài)的線程,并將該喚醒后的線程分配給該新的產(chǎn)品檢測任務(wù),進(jìn)而避免重新新建線程而對后臺(tái)資源的占用,同時(shí),在線程數(shù)量一定的情況下,既保證了后臺(tái)資源的高效利用,同時(shí)也提升了線程的使用效率。
例如,有A、B、C、D四個(gè)線程,其中,在間隔時(shí)間點(diǎn)T處檢測到線程A處于空閑狀態(tài),而線程B、C、D處于執(zhí)行產(chǎn)品檢測任務(wù)的工作狀態(tài),則休眠線程A,同時(shí)在線程A處于休眠期間,監(jiān)測是否存在新的產(chǎn)品檢測任務(wù)以及新的空閑線程(比如B、C、D任一個(gè)或多個(gè)),如果監(jiān)測到新的產(chǎn)品檢測任務(wù),但同時(shí)不存在空閑的線程(也即B、C、D仍然處于工作狀態(tài)),則將線程A喚醒,并將線程A分配給當(dāng)前新的產(chǎn)品檢測任務(wù)。
可選的,在本發(fā)明線程管理裝置一實(shí)施例中,分配模塊50具體還用于:若當(dāng)前存在空閑的線程且存在新的產(chǎn)品檢測任務(wù),則將該空閑的線程分配給該新的產(chǎn)品檢測任務(wù)。例如,在線程A處于休眠期間且未達(dá)到下一間隔時(shí)間點(diǎn)時(shí),監(jiān)測到新的產(chǎn)品檢測任務(wù),同時(shí),存在空閑的線程B,則直接將線程B分配給該新的產(chǎn)品檢測任務(wù)而無需喚醒線程A,進(jìn)而進(jìn)一步降低對后臺(tái)資源的占用。
本實(shí)施例中,當(dāng)產(chǎn)品檢測任務(wù)較少時(shí),休眠空閑的線程。而當(dāng)產(chǎn)品檢測任務(wù)較多時(shí),若不存在空閑的線程而存在休眠的線程,則將之前休眠的線程喚醒并分配給當(dāng)前的檢測任務(wù),進(jìn)而可對線程的分配進(jìn)行干預(yù)以防止線程的無限增加而導(dǎo)致后臺(tái)資源被大量占用致使產(chǎn)品檢測速度下降,從而相對提升了產(chǎn)品檢測的速度與效率。
參照圖3,圖3為本發(fā)明線程管理裝置第二實(shí)施例的功能模塊示意圖。本實(shí)施例中,線程管理裝置進(jìn)一步還包括:
線程模塊60,用于建立固定數(shù)量的用于執(zhí)行產(chǎn)品檢測任務(wù)的線程。
本實(shí)施例中,在開始進(jìn)行產(chǎn)品檢測之前,預(yù)先建立固定數(shù)量的檢測線程,同時(shí)所有線程都處于可分配狀態(tài)。比如預(yù)先建立20條檢測線程,同時(shí)開始每隔預(yù)設(shè)時(shí)長進(jìn)行空閑線程的檢測,例如,在間隔時(shí)長內(nèi)若不存在空閑線程,則不進(jìn)行休眠處理,而在間隔時(shí)長內(nèi)若存在空閑的線程時(shí),則休眠該空閑的線程。
本實(shí)施例中,通過預(yù)先建立固定數(shù)量的檢測線程,從而避免線程無限次新建而導(dǎo)致后臺(tái)資源被嚴(yán)重占用后使得產(chǎn)品檢測速度下降的問題。
參照圖4,圖4為本發(fā)明線程管理裝置第三實(shí)施例的功能模塊示意圖。本實(shí)施例中,線程管理裝置進(jìn)一步還包括:
緩存模塊70,用于在當(dāng)前不存在休眠的線程時(shí),將當(dāng)前新的產(chǎn)品檢測任務(wù)緩存至預(yù)設(shè)任務(wù)隊(duì)列中。
本實(shí)施例中,若當(dāng)前正在執(zhí)行產(chǎn)品檢測任務(wù)的檢測線程的總數(shù)達(dá)到預(yù)設(shè)建立的線程的固定數(shù)量,也即當(dāng)前不存在空閑的線程以及休眠的線程時(shí),此時(shí)若新建線程,則可能導(dǎo)致后臺(tái)資源被大量占用而降低產(chǎn)品檢測速度,因此,通過預(yù)先建立的任務(wù)隊(duì)列來緩存當(dāng)前產(chǎn)生的新的產(chǎn)品檢測任務(wù)。需要說明的是,本實(shí)施例中對于任務(wù)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)形式不限,比如單向鏈表結(jié)構(gòu)、雙向鏈表結(jié)構(gòu)等。
例如,在進(jìn)行產(chǎn)品檢測之前,預(yù)先建立多個(gè)線程,比如預(yù)先建立20條檢測線程,則每產(chǎn)生一條產(chǎn)品檢測任務(wù)則對應(yīng)分配一條線程,而若當(dāng)前已建立的線程已經(jīng)分配完畢,則將當(dāng)前產(chǎn)生的新的產(chǎn)品檢測任務(wù)緩存至任務(wù)隊(duì)列中,從而等待線程空閑時(shí)再行分配。
本實(shí)施例中,通過預(yù)先建立固定數(shù)量的線程,從而避免線程無限次新建而導(dǎo)致后臺(tái)資源被嚴(yán)重占用后使得產(chǎn)品檢測速度下降的問題,同時(shí),在固定數(shù)量的線程被全部占用時(shí),通過任務(wù)隊(duì)列以緩存其他新的產(chǎn)品檢測任務(wù),進(jìn)而在減少產(chǎn)品檢測任務(wù)處理量的同時(shí),相對提升產(chǎn)品的檢測速度。
進(jìn)一步可選的,在本發(fā)明線程管理裝置一實(shí)施例中,監(jiān)測模塊10還用于:監(jiān)測當(dāng)前是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程;分配模塊50還用于:在當(dāng)前存在已執(zhí)行完產(chǎn)品檢測任務(wù)的線程時(shí),從任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該線程分配給該取出的產(chǎn)品檢測任務(wù)。
本實(shí)施例中,在任務(wù)隊(duì)列中緩存產(chǎn)品檢測任務(wù)的同時(shí),監(jiān)測當(dāng)前已分配的線程中是否存在已執(zhí)行完產(chǎn)品檢測任務(wù)的空閑線程,如果存在空閑的線程,也即存在可分配的線程時(shí),從任務(wù)隊(duì)列中取出產(chǎn)品檢測任務(wù),并將該空閑的檢測線程分配給該取出的產(chǎn)品檢測任務(wù)。
例如,預(yù)先建立了A、B、C、D四條線程,如果該四條線程都依次被分配了產(chǎn)品檢測任務(wù),則當(dāng)檢測到新的產(chǎn)品檢測任務(wù)時(shí),將產(chǎn)品檢測任務(wù)緩存到任務(wù)隊(duì)列中,同時(shí)監(jiān)測A、B、C、D四條線程是否已執(zhí)行完產(chǎn)品檢測任務(wù),假設(shè)A線程執(zhí)行完了檢測任務(wù),則可將任務(wù)隊(duì)列的隊(duì)首所對應(yīng)的產(chǎn)品檢測任務(wù)取出,并將A線程分配給該取出的產(chǎn)品檢測任務(wù),從而無需再次新建新的檢測任務(wù),進(jìn)而防止檢測線程的無限增加而導(dǎo)致后臺(tái)資源被大量占用致使產(chǎn)品檢測速度下降,從而相對提升了產(chǎn)品檢測的速度與效率。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。