java 隨機(jī)延遲執(zhí)行
問題描述
怎么讓一個(gè)程序延遲執(zhí)行,指定延遲時(shí)間訪問,比如收到請(qǐng)求后對(duì)該請(qǐng)求進(jìn)行記錄,讓后續(xù)操作在一天呢延遲執(zhí)行
問題解答
回答1:可以使用調(diào)度框架 quartz
回答2:1.收到數(shù)據(jù)存庫記錄下來
2.linux下可以使用crond進(jìn)行定時(shí)任務(wù)檢查任務(wù),并調(diào)用java提供得觸發(fā)任務(wù)接口
3.把任務(wù)加入redis,使用java進(jìn)行定時(shí)處理。
回答3:收到一個(gè)請(qǐng)求就創(chuàng)建一個(gè)線程,用ScheduledThreadPoolExecutor方法在固定的延遲后執(zhí)行。
回答4:SpringMVC里面的Quartz,可以自由配置多個(gè)定時(shí)的任務(wù)
回答5:如果是Java Web項(xiàng)目,就在后臺(tái)啟動(dòng)一個(gè)Servlet,例如<servlet><servlet-name>servlet的名字</servlet-name><servlet-class>servlet所在的包的路徑</servlet-class> <load-on-startup>1</load-on-startup></servlet>
并在后臺(tái)維護(hù)一個(gè)線程池,將需要延遲執(zhí)行的請(qǐng)求加入到線程池中,并為每個(gè)線程加上時(shí)間標(biāo)識(shí),以便后續(xù)檢查,Servlet定期從線程池中取出線程,檢查是否該執(zhí)行,如果滿足執(zhí)行條件,則執(zhí)行,如果不滿足,就將線程放回線程池。如果不是Web項(xiàng)目,可以使用Java的Timer,同時(shí)也維護(hù)一個(gè)線程池,使用Timer定時(shí)去做檢查。
相關(guān)文章:
1. html5 - java用commons-fileupload上傳文件沒效果!2. 服務(wù)器上nginx無法訪問html的配置問題3. 關(guān)于docker下的nginx壓力測(cè)試4. docker-machine添加一個(gè)已有的docker主機(jī)問題5. docker鏡像push報(bào)錯(cuò)6. angular.js - angular內(nèi)容過長展開收起效果7. nignx - docker內(nèi)nginx 80端口被占用8. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.9. dockerfile - 為什么docker容器啟動(dòng)不了?10. 為什么我ping不通我的docker容器呢???
