• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      線(xiàn)程池技術(shù)在考試系統(tǒng)中的應(yīng)用①

      2016-06-15 03:50:45葛萌于博歐陽(yáng)宏基咸陽(yáng)師范學(xué)院信息工程學(xué)院咸陽(yáng)7000河南建筑職業(yè)技術(shù)學(xué)院信息工程系鄭州450064

      葛萌,于博,歐陽(yáng)宏基(咸陽(yáng)師范學(xué)院 信息工程學(xué)院,咸陽(yáng) 7000)(河南建筑職業(yè)技術(shù)學(xué)院 信息工程系,鄭州 450064)

      ?

      線(xiàn)程池技術(shù)在考試系統(tǒng)中的應(yīng)用①

      葛萌1,于博2,歐陽(yáng)宏基1
      (咸陽(yáng)師范學(xué)院 信息工程學(xué)院,咸陽(yáng) 712000)
      (河南建筑職業(yè)技術(shù)學(xué)院 信息工程系,鄭州 450064)

      摘 要:當(dāng)較大規(guī)??蛻?hù)端并發(fā)請(qǐng)求服務(wù)器端應(yīng)用程序時(shí),傳統(tǒng)的為每個(gè)請(qǐng)求創(chuàng)建線(xiàn)程的解決方法會(huì)導(dǎo)致服務(wù)器端性能的嚴(yán)重下降甚至死機(jī).通過(guò)分析JDK的Executor框架,從工作原理、核心線(xiàn)程池對(duì)象、執(zhí)行策略等方面詳細(xì)描述了線(xiàn)程池模型,應(yīng)用到一個(gè)三層C/S架構(gòu)的在線(xiàn)考試系統(tǒng)中,給出了服務(wù)端的設(shè)計(jì)架構(gòu)和實(shí)現(xiàn)代碼.通過(guò)仿真測(cè)試證明了線(xiàn)程池技術(shù)在解決較大并發(fā)訪(fǎng)問(wèn)方面的穩(wěn)定性.

      關(guān)鍵詞:線(xiàn)程池; Executor框架; 在線(xiàn)考試系統(tǒng)

      目前已經(jīng)有一些成功應(yīng)用的考試系統(tǒng),例如全國(guó)計(jì)算機(jī)等級(jí)考試、軟件資格(水平)考試系統(tǒng)等.這類(lèi)系統(tǒng)是基于C/S架構(gòu)的網(wǎng)絡(luò)通信系統(tǒng),學(xué)生使用客戶(hù)端程序在一個(gè)較小規(guī)模(全國(guó)計(jì)算機(jī)等級(jí)考試要求每個(gè)考場(chǎng)的最大考生數(shù)為99人)的局域網(wǎng)內(nèi)與唯一的服務(wù)器端程序通信.當(dāng)考生的并發(fā)量較小時(shí),服務(wù)器可采用為每個(gè)請(qǐng)求創(chuàng)建一個(gè)線(xiàn)程的方式來(lái)與考生端通信,實(shí)現(xiàn)難度也不大.但是當(dāng)考生端有較大規(guī)模并發(fā)量時(shí),此方式將會(huì)極大的消耗服務(wù)器資源,因?yàn)榇罅烤€(xiàn)程間頻繁的切換會(huì)打亂系統(tǒng)固有的切換周期,而且每個(gè)線(xiàn)程本身都會(huì)占用一定的內(nèi)存,因此會(huì)導(dǎo)致服務(wù)器端響應(yīng)緩慢甚至死機(jī)的情況.

      為了解決上述問(wèn)題,從硬件方面可以采取提高服務(wù)器內(nèi)存、CPU個(gè)數(shù)以及搭建服務(wù)器集群的方式來(lái)完成.本文主要從軟件設(shè)計(jì)方面通過(guò)引入線(xiàn)程池技術(shù)來(lái)解決.分析了JDK的線(xiàn)程池模型、介紹了一個(gè)在線(xiàn)考試系統(tǒng)框架及主要功能,并將線(xiàn)程池引入到服務(wù)器端的程序設(shè)計(jì)中,詳細(xì)描述了實(shí)現(xiàn)過(guò)程.通過(guò)與傳統(tǒng)線(xiàn)程-模型在高并發(fā)量的測(cè)試對(duì)比,證明了線(xiàn)程池的可行性.

      1 線(xiàn)程池技術(shù)

      1.1工作原理

      線(xiàn)程池的核心思想是避免創(chuàng)建大量線(xiàn)程和對(duì)已有線(xiàn)程的復(fù)用[2,3].通常情況下,服務(wù)器端程序在啟動(dòng)時(shí)創(chuàng)建若干數(shù)量的線(xiàn)程對(duì)象并緩存起來(lái),此時(shí)它們處于空閑狀態(tài); 當(dāng)客戶(hù)端請(qǐng)求到來(lái)并被服務(wù)器接受后(否則將客戶(hù)端請(qǐng)求放入任務(wù)隊(duì)列),從線(xiàn)程池中喚醒一個(gè)線(xiàn)程與該客戶(hù)端進(jìn)行通信,結(jié)束通信后該線(xiàn)程對(duì)象會(huì)被線(xiàn)程池回收,準(zhǔn)備用它執(zhí)行下一次任務(wù).線(xiàn)程池還要對(duì)任務(wù)隊(duì)列的大小、空閑線(xiàn)程的銷(xiāo)毀、新線(xiàn)程的創(chuàng)建以及對(duì)客戶(hù)端請(qǐng)求的拒絕等進(jìn)行管理,這樣可以更好的利用線(xiàn)程對(duì)象并對(duì)服務(wù)器進(jìn)行有效的保護(hù).

      與傳統(tǒng)多線(xiàn)程方式相比,線(xiàn)程池具有以下兩點(diǎn)優(yōu)勢(shì)[4]: ①減少了創(chuàng)建和銷(xiāo)毀線(xiàn)程的次數(shù),每個(gè)工作線(xiàn)程都可以被重用,能執(zhí)行多個(gè)任務(wù).②可根據(jù)系統(tǒng)的承載能力方便地調(diào)整線(xiàn)程池中線(xiàn)程的數(shù)目,防止消耗過(guò)量系統(tǒng)資源而導(dǎo)致崩潰.

      1.2JDK線(xiàn)程池體系結(jié)構(gòu)

      由于線(xiàn)程池與業(yè)務(wù)是無(wú)關(guān)的,設(shè)計(jì)一個(gè)線(xiàn)程池至少要考慮以下幾個(gè)方面[5,6]: ①對(duì)任務(wù)進(jìn)行描述的類(lèi),包含線(xiàn)程池中線(xiàn)程執(zhí)行的所有信息.②可動(dòng)態(tài)變化的、保存任務(wù)的隊(duì)列.③線(xiàn)程池管理器,用來(lái)創(chuàng)建、銷(xiāo)毀線(xiàn)程池,提供對(duì)任務(wù)的調(diào)用與轉(zhuǎn)發(fā).④處理任務(wù)的工作線(xiàn)程類(lèi).⑤查詢(xún)線(xiàn)程,用來(lái)檢測(cè)任務(wù)的完成情況.⑥服務(wù)器無(wú)法接受請(qǐng)求時(shí)的拒絕策略.同時(shí)還要考慮同步以及死鎖風(fēng)險(xiǎn)等,所以從頭開(kāi)發(fā)一個(gè)線(xiàn)程池是具有一定難度的.為了簡(jiǎn)化使用線(xiàn)程池的難度,JDK從1.5版本開(kāi)始在java.util.concurrent包中提供了對(duì)線(xiàn)程池功能的支持,相關(guān)核心接口、類(lèi)的層次關(guān)系如圖1所示.

      圖1 JDK線(xiàn)程池的類(lèi)圖關(guān)系

      Executor接口包含唯一的execute方法,通過(guò)Runnable來(lái)表示要執(zhí)行的任務(wù),將任務(wù)的提交與執(zhí)行操作進(jìn)行解耦.ExecutorService接口是真正意義上的線(xiàn)程池頂級(jí)接口,其中定義了提交FutureTask任務(wù)的方法以及若干與線(xiàn)程池生命周期相關(guān)的方法.例如: shutdown()方法用來(lái)關(guān)閉線(xiàn)程池,以前提交的任務(wù)會(huì)被執(zhí)行.shutdownNow()方法強(qiáng)制關(guān)閉線(xiàn)程池,取消所有運(yùn)行中的任務(wù)以及在工作隊(duì)列中等待的任務(wù),同時(shí)將等待任務(wù)以L(fǎng)ist集合返回.awaitTermination方法使得當(dāng)前線(xiàn)程在給定的時(shí)間單位內(nèi)等待給定的時(shí)間間隔,若超時(shí)則返回線(xiàn)程池是否已經(jīng)關(guān)閉.isTerminated()方法判斷線(xiàn)程池是否已經(jīng)處于關(guān)閉狀態(tài).抽象類(lèi)AbstractExecutorService主要實(shí)現(xiàn)了ExecutorService FutureTask相關(guān)的一些任務(wù)創(chuàng)建和提交的方法.ThreadPoolExecutor是最核心的一個(gè)類(lèi),用來(lái)表示線(xiàn)程池對(duì)象(詳見(jiàn)1.3節(jié)描述).Scheduled ThreadPool Executor具有ThreadPoolExecutor的大部分功能,可另行安排在給定的延遲后或者定期執(zhí)行任務(wù).

      1.3核心線(xiàn)程池對(duì)象

      ThreadPoolExecutor是線(xiàn)程池體系中的核心類(lèi),用來(lái)創(chuàng)建和維護(hù)線(xiàn)程池對(duì)象.該類(lèi)包含的主要屬性說(shuō)明如下[7]:

      corePoolSize: 在沒(méi)有任務(wù)執(zhí)行時(shí),線(xiàn)程池中所保留的線(xiàn)程數(shù)目.

      maximumPoolsize: 線(xiàn)程池中同時(shí)工作的線(xiàn)程數(shù)的最大值.

      keepAliveTime: 當(dāng)線(xiàn)程數(shù)大于核心數(shù)時(shí),空閑線(xiàn)程等待新任務(wù)的最長(zhǎng)時(shí)間.超過(guò)這個(gè)時(shí)間空閑線(xiàn)程沒(méi)有接到任務(wù)就會(huì)被回收.

      unit: keepAliveTime參數(shù)的時(shí)間單位.workers:正在被線(xiàn)程執(zhí)行的任務(wù)集合.workQueue: 等待被執(zhí)行的任務(wù)隊(duì)列,任務(wù)實(shí)現(xiàn)Runnable接口,由Execute方法調(diào)用執(zhí)行.

      threadFactory: 線(xiàn)程工廠,用于在線(xiàn)程池需要新創(chuàng)建線(xiàn)程的時(shí)候創(chuàng)建線(xiàn)程.

      defaultHandler: 當(dāng)前池中線(xiàn)程數(shù)已達(dá)到最大值,并且任務(wù)隊(duì)列已滿(mǎn),線(xiàn)程池中無(wú)法承載線(xiàn)程時(shí)的處理策略.

      線(xiàn)程池的核心大小(corePoolSize)、最大值(MaximumPoolSize)和存活大小(keepAliveTime)共同負(fù)責(zé)線(xiàn)程的創(chuàng)建和銷(xiāo)毀.如果當(dāng)前線(xiàn)程池處于運(yùn)行狀態(tài),任務(wù)提交給線(xiàn)程池后的執(zhí)行過(guò)程如圖2所示.通過(guò)調(diào)節(jié)線(xiàn)程池的基本大小和存活時(shí)間,可以幫助線(xiàn)程池回收空閑線(xiàn)程占有的資源,從而使這些資源可以用于執(zhí)行其它工作.

      圖2 線(xiàn)程池中任務(wù)的執(zhí)行流程

      1.4執(zhí)行策略

      執(zhí)行策略是一種資源管理方式,通過(guò)限制并發(fā)的數(shù)量來(lái)確保應(yīng)用程序不會(huì)由于資源耗盡而崩潰.執(zhí)行策略[8]主要從執(zhí)行任務(wù)的線(xiàn)程、任務(wù)的執(zhí)行順序、任務(wù)并發(fā)執(zhí)行的個(gè)數(shù)、任務(wù)隊(duì)列中等待執(zhí)行的個(gè)數(shù)、對(duì)哪個(gè)任務(wù)進(jìn)行拒絕并如何通知應(yīng)用程序等方面來(lái)定義任務(wù)的執(zhí)行,從而確保應(yīng)用程序具有較好的性能.

      Executors類(lèi)通過(guò)工廠方法提供了四種執(zhí)行策略來(lái)管理工作線(xiàn)程,分別是: ①newSingleThreadPool: 確保所有任務(wù)按照提交的先后順序(FIFO、LIFO、優(yōu)先級(jí))由唯一工作線(xiàn)程來(lái)執(zhí)行,該策略不算真正意義上的并發(fā).②newFixedThreadPool(Fix類(lèi)型): 隨著任務(wù)的提交而逐個(gè)創(chuàng)建線(xiàn)程,直到數(shù)量達(dá)到某個(gè)固定的最大值.③newCachedThreadPool(Cached類(lèi)型): 線(xiàn)程池大小完全依賴(lài)于操作系統(tǒng)(或者JVM)能夠創(chuàng)建的最大線(xiàn)程數(shù),并且能根據(jù)當(dāng)前任務(wù)的數(shù)量來(lái)調(diào)整線(xiàn)程池中線(xiàn)程的個(gè)數(shù),適合于執(zhí)行生存周期較短的異步任務(wù).④newScheduledThreadPool: 創(chuàng)建一個(gè)大小無(wú)限的線(xiàn)程池.此線(xiàn)程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求.以上策略中,如果有線(xiàn)程因?yàn)楫惓6K止都會(huì)創(chuàng)建新的線(xiàn)程對(duì)象來(lái)彌補(bǔ).如果上述4種策略都無(wú)法滿(mǎn)足需求,可以通過(guò)創(chuàng)建ThreadPoolExecutor對(duì)象來(lái)定制策略.

      2 線(xiàn)程池在系統(tǒng)中的應(yīng)用

      2.1考試系統(tǒng)架構(gòu)

      在線(xiàn)考試系統(tǒng)是基于校園網(wǎng)的分布式三層C/S架構(gòu)(如圖3所示)[9],分別為: 表示層、業(yè)務(wù)層和數(shù)據(jù)層.表示層是應(yīng)用的用戶(hù)接口部分,采用Java Swing來(lái)設(shè)計(jì),界面和功能通過(guò)角色來(lái)區(qū)分.業(yè)務(wù)層是系統(tǒng)的核心內(nèi)容,由位于服務(wù)器端的業(yè)務(wù)邏輯來(lái)封裝,通過(guò)RMI向表示層提供服務(wù).數(shù)據(jù)層就是數(shù)據(jù)庫(kù)管理系統(tǒng),為業(yè)務(wù)層和表示層提供數(shù)據(jù)服務(wù),服務(wù)器端和客戶(hù)端均采用MySQL數(shù)據(jù)庫(kù).

      圖3 考試系統(tǒng)架構(gòu)圖

      三層分布式處理方式使得學(xué)生端和服務(wù)器端各自運(yùn)行本地和遠(yuǎn)程服務(wù),可以解決數(shù)據(jù)層與業(yè)務(wù)層的分離,達(dá)到數(shù)據(jù)的安全保密.由于考生端程序運(yùn)行于本地,只有在登錄、抽取試題與提交試卷時(shí)才與服務(wù)器通信,答題階段都是訪(fǎng)問(wèn)本地的數(shù)據(jù)庫(kù),這樣可以提高數(shù)據(jù)讀取效率、減輕對(duì)服務(wù)端的壓力.

      2.2基于線(xiàn)程池的服務(wù)器端設(shè)計(jì)

      由于考生只有在登錄、抽取試題和提交試卷這三個(gè)操作涉及與服務(wù)器端交互,考慮到考生人數(shù)的眾多以及操作的同時(shí)性,所以服務(wù)器端采用線(xiàn)程池技術(shù).所設(shè)計(jì)的服務(wù)器端的工作流程是: 1)初始化系統(tǒng)信息,讀取參加本次考試的學(xué)生總數(shù),該數(shù)值用于創(chuàng)建線(xiàn)程池的任務(wù)隊(duì)列.2)創(chuàng)建線(xiàn)程池對(duì)象以及管理線(xiàn)程.3)創(chuàng)建基于TCP協(xié)議的ServerSocket套接字,在某一端口監(jiān)聽(tīng)考生端的請(qǐng)求.4)當(dāng)有考生端請(qǐng)求到來(lái)時(shí),將請(qǐng)求加到任務(wù)隊(duì)列,從線(xiàn)程池中拿出空閑線(xiàn)程去接受請(qǐng)求.5)管理線(xiàn)程用于監(jiān)測(cè)線(xiàn)程池中線(xiàn)程的數(shù)量及時(shí)進(jìn)行新線(xiàn)程的創(chuàng)建與銷(xiāo)毀.6)任務(wù)處理線(xiàn)程對(duì)考生端發(fā)送過(guò)來(lái)的信息進(jìn)行分析,根據(jù)登錄、抽題和交卷操作分別進(jìn)行處理.

      2.3服務(wù)器端的實(shí)現(xiàn)

      圖4 服務(wù)器端流程圖

      當(dāng)服務(wù)器端啟動(dòng)考試后,創(chuàng)建基于TCP協(xié)議的ServerSocket對(duì)象.如果服務(wù)器成功接受考生端的請(qǐng)求便返回一個(gè)Socket對(duì)象(該Socket對(duì)象與某個(gè)考生端是一一對(duì)應(yīng)的).通過(guò)實(shí)現(xiàn)Runnable接口按匿名內(nèi)部類(lèi)方式創(chuàng)建任務(wù)對(duì)象,并提交給線(xiàn)程池對(duì)象的execute()方法進(jìn)行調(diào)用.相關(guān)核心代碼如下所示:

      handleRequest為任務(wù)對(duì)象的核心方法,通過(guò)封裝Socket對(duì)象,根據(jù)讀取輸入流中第一行字符串信息判斷當(dāng)前客戶(hù)端的請(qǐng)求類(lèi)型并執(zhí)行相應(yīng)的邏輯.

      3 仿真測(cè)試

      服務(wù)器可用內(nèi)存4G,操作系統(tǒng)為Windows Server 2008,CPU個(gè)數(shù)是4,JDK版本為1.6.服務(wù)器端分別運(yùn)行多線(xiàn)程、Fixed類(lèi)型線(xiàn)程池和Cache類(lèi)型線(xiàn)程池模型的程序; 客戶(hù)機(jī)通過(guò)測(cè)試程序來(lái)模擬一定數(shù)量的學(xué)生端向服務(wù)器發(fā)起抽取試題請(qǐng)求,試題文件的容量大約在160KB左右,統(tǒng)計(jì)三種情況下學(xué)生端讀取試題的平均時(shí)間.為了能夠使服務(wù)器接受更多的客戶(hù)端連接請(qǐng)求,采用ServerSocket(int port,int backlog)構(gòu)造方法來(lái)創(chuàng)建服務(wù)器端套接字,其中backlog表示允許接受客戶(hù)端請(qǐng)求的最大連接數(shù),測(cè)試過(guò)程過(guò)不斷改變此值,并將該值與客戶(hù)端并發(fā)數(shù)保持一致.對(duì)于Fixed類(lèi)型線(xiàn)程池,根據(jù)文獻(xiàn)[10]的研究最大線(xiàn)程數(shù)=CPU數(shù)量*2+2,以達(dá)到對(duì)CPU的最佳利用率.測(cè)試結(jié)果如表1所示.

      表1 仿真測(cè)試

      從表1 看出,隨著并發(fā)數(shù)量的增加,在多線(xiàn)程方式下學(xué)生端抽到試題的平均時(shí)間逐漸增大,過(guò)多的線(xiàn)程導(dǎo)致服務(wù)器的開(kāi)銷(xiāo)增大; 線(xiàn)程池方式下,兩種類(lèi)型的線(xiàn)程池在同數(shù)量的請(qǐng)求下,學(xué)生端抽到試題的平均時(shí)間都比多線(xiàn)程方式小,這是因?yàn)榫€(xiàn)程池實(shí)現(xiàn)了線(xiàn)程的重用,減少了線(xiàn)程創(chuàng)建、銷(xiāo)毀的時(shí)間消耗.Fix類(lèi)型的線(xiàn)程池采用LinkedBlockingQueue作為存放任務(wù)的隊(duì)列,keepAliveTime值為0秒; Cached類(lèi)型的線(xiàn)程池采用SynchronousQueue作為存放任務(wù)的隊(duì)列,keepAliveTime值為60秒,所以在同等并發(fā)量情況下,Fix類(lèi)型的線(xiàn)程池比Cache類(lèi)型的線(xiàn)程池具有較高的效率.測(cè)試結(jié)果表明采用線(xiàn)程池技術(shù)的本系統(tǒng)是可行的、高效的.

      4 結(jié)語(yǔ)

      與傳統(tǒng)的為每個(gè)請(qǐng)求創(chuàng)建一個(gè)線(xiàn)程的方式相比,Executor 線(xiàn)程池執(zhí)行框架實(shí)現(xiàn)了任務(wù)描述、提交與任務(wù)執(zhí)行之間的解耦; 簡(jiǎn)化了對(duì)任務(wù)和線(xiàn)程的管理,提高了系統(tǒng)效率.下一步準(zhǔn)備將本考試系統(tǒng)應(yīng)用于更多科目的考試,科目不同會(huì)導(dǎo)致試題的容量不同,進(jìn)而研究文件容量、網(wǎng)絡(luò)傳輸速度、硬件參數(shù)與線(xiàn)程池的并發(fā)關(guān)系,進(jìn)一步優(yōu)化系統(tǒng)的性能.

      參考文獻(xiàn)

      1杜靜,何利娟,歐陽(yáng)宏基.基于JDBC與DAO模式的在線(xiàn)考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).咸陽(yáng)師范學(xué)院學(xué)報(bào),2014,29(2):26–29.

      2宋開(kāi)衛(wèi),石堅(jiān),程哲.基于線(xiàn)程池的數(shù)據(jù)采集器在網(wǎng)管中的應(yīng)用.計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(7):210–212.

      3王華,馬亮,顧明.線(xiàn)程池技術(shù)研究與應(yīng)用.計(jì)算機(jī)應(yīng)用研究,2005,22(11):141–142.

      4劉新強(qiáng),曾兵義.用線(xiàn)程池解決服務(wù)器并發(fā)請(qǐng)求的方案設(shè)計(jì).現(xiàn)代電子技術(shù),2011,34(15):141–143.

      5閆保中,張波.線(xiàn)程池技術(shù)在車(chē)流監(jiān)控系統(tǒng)中的應(yīng)用.應(yīng)用科技,2011,38(10):18–22.

      6王文武,趙衛(wèi)東,王志成,陳悅,韓下林.高性能服務(wù)器底層網(wǎng)絡(luò)通信模塊的設(shè)計(jì)方法.計(jì)算機(jī)工程,2009,35(3):103–105.

      7吳玉,劉美伶,祝建中.基于Java Executor的并發(fā)技術(shù)研究.計(jì)算機(jī)時(shí)代,2009,(2):8–10.

      8Goetz B,Peierls T,Bloch J.Java concurrency in practice.China Machine Press,2014: 98–102.

      9田屏.基于C/S架構(gòu)的考試系統(tǒng)設(shè)計(jì)[碩士學(xué)位論文].貴陽(yáng):貴州大學(xué),2008.

      10顧永新.運(yùn)用線(xiàn)程池技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)高速同步.信息系統(tǒng)工程,2013,(3):97–99,126.

      Application of Thread Pool Technology in Examination System

      GE Meng1,YU Bo2,OUYANG Hong-Ji1
      1(Information Engineering College,Xianyang Normal University,Xianyang 721000,China)
      2(Information Engineering Department,Henan Technical College Of Construction,Zhenzhou 450064,China)

      Abstract:When large-scale client requests for applications in server concurrently,traditional solutions create a thread for every request,which will lead to a serious decline in server performance and even crash.By analyzing the JDK’s Executor framework,the paper described in detail thread pool model from the principle of work,core thread pool object,implementation strategy and other aspects,applied the thread pool to a online examination system of three-layer C/S architecture,and gave the server’s design framework and implementation code.Through simulation tests,the stability of the thread pool technical in the process of solving large concurrent access is proved.

      Key words:thread pool; Executor framework; online examination system考試系統(tǒng)是高等院校數(shù)字化校園建設(shè)的一個(gè)重要內(nèi)容,通過(guò)代替?zhèn)鹘y(tǒng)的紙質(zhì)考試以減少校園開(kāi)支、提高成績(jī)的客觀性和公正性,并且減輕教師的工作強(qiáng)度[1].

      基金項(xiàng)目:①咸陽(yáng)師范學(xué)院專(zhuān)項(xiàng)科研計(jì)劃(2012XSYK070)

      收稿時(shí)間:2015-07-29;收到修改稿時(shí)間:2015-10-08

      永平县| 红桥区| 桦甸市| 内黄县| 松江区| 五原县| 仪征市| 安远县| 桂平市| 合江县| 红河县| 宁夏| 思南县| 黔南| 呼和浩特市| 休宁县| 六安市| 蚌埠市| 饶河县| 甘德县| 黄山市| 乌审旗| 琼结县| 巩义市| 井研县| 蒙自县| 峡江县| 泰和县| 武义县| 峨边| 卓资县| 顺昌县| 宁德市| 本溪| 长乐市| 平定县| 张北县| 二手房| 建瓯市| 沧源| 祥云县|