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. 關(guān)于docker下的nginx壓力測(cè)試2. python redis 列表插入 速度太慢3. mysql里的大表用mycat做水平拆分,是不是要先手動(dòng)分好,再配置mycat4. debian - docker依賴的aufs-tools源碼哪里可以找到啊?5. golang - 用IDE看docker源碼時(shí)的小問(wèn)題6. docker images顯示的鏡像過(guò)多,狗眼被亮瞎了,怎么辦?7. docker內(nèi)創(chuàng)建jenkins訪問(wèn)另一個(gè)容器下的服務(wù)器問(wèn)題8. html5 - H5中播放的視頻如何有效的進(jìn)行知識(shí)產(chǎn)權(quán)保護(hù)-防下載防盜鏈9. docker不顯示端口映射呢?10. dockerfile - [docker build image失敗- npm install]
