java 隨機(jī)延遲執(zhí)行
問(wèn)題描述
怎么讓一個(gè)程序延遲執(zhí)行,指定延遲時(shí)間訪問(wèn),比如收到請(qǐng)求后對(duì)該請(qǐng)求進(jìn)行記錄,讓后續(xù)操作在一天呢延遲執(zhí)行
問(wèn)題解答
回答1:可以使用調(diào)度框架 quartz
回答2:1.收到數(shù)據(jù)存庫(kù)記錄下來(lái)
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. node.js - nodejs+express+vue2. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?3. java - web端百度網(wǎng)盤的一個(gè)操作為什么要分兩次請(qǐng)求服務(wù)器, 有什么好處嗎4. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。5. javascript - 如何獲取未來(lái)元素的父元素在頁(yè)面中所有相同元素中是第幾個(gè)?6. python - 如何把152753這個(gè)字符串轉(zhuǎn)變成時(shí)間格式15:27:537. 使用mysql命令行連接遠(yuǎn)程數(shù)據(jù)庫(kù)host跳轉(zhuǎn)8. javascript - onclick事件點(diǎn)擊不起作用9. javascript - webpack-dev-server和webpack沖突嗎10. python 字符串匹配問(wèn)題

網(wǎng)公網(wǎng)安備