怎麼讓一個程式延遲執行,指定延遲時間訪問,例如收到請求後對該請求進行記錄,讓後續操作在一天呢延遲執行
可以使用調度框架 quartz
1.收到資料存庫記錄下來
2.linux下可以使用crond進行定時任務檢查任務,並呼叫java提供得觸發任務介面
3.把任務加入redis,使用java進行定時處理。
收到一個請求就建立一個線程,用ScheduledThreadPoolExecutor方法在固定的延遲後執行。
SpringMVC裡面的Quartz,可以自由配置多個定時的任務
如果是Java Web項目,就在後台啟動一個Servlet,例如<servlet><servlet-name>servlet的名字</servlet-name><servlet-class>servlet所在的包的路径</servlet-class> <load-on-startup>1</load-on-startup></servlet>
<servlet><servlet-name>servlet的名字</servlet-name><servlet-class>servlet所在的包的路径</servlet-class> <load-on-startup>1</load-on-startup></servlet>
並在後台維護一個線程池,將需要延遲執行的請求加入到線程池中,並為每個線程加上時間標識,以便後續檢查,Servlet定期從線程池中取出線程,檢查是否該執行,如果滿足執行條件,則執行,如果不滿足,就將執行緒放回執行緒池。如果不是Web項目,可以使用Java的Timer,同時也維護一個執行緒池,使用Timer定時去做檢查。
可以使用調度框架 quartz
1.收到資料存庫記錄下來
2.linux下可以使用crond進行定時任務檢查任務,並呼叫java提供得觸發任務介面
3.把任務加入redis,使用java進行定時處理。
收到一個請求就建立一個線程,用ScheduledThreadPoolExecutor方法在固定的延遲後執行。
SpringMVC裡面的Quartz,可以自由配置多個定時的任務
如果是Java Web項目,就在後台啟動一個Servlet,
例如
<servlet><servlet-name>servlet的名字</servlet-name><servlet-class>servlet所在的包的路径</servlet-class> <load-on-startup>1</load-on-startup></servlet>
並在後台維護一個線程池,將需要延遲執行的請求加入到線程池中,並為每個線程加上時間標識,以便後續檢查,Servlet定期從線程池中取出線程,檢查是否該執行,如果滿足執行條件,則執行,如果不滿足,就將執行緒放回執行緒池。如果不是Web項目,可以使用Java的Timer,同時也維護一個執行緒池,使用Timer定時去做檢查。