【Java并发编程】20、DelayQueue实现订单的定时取消
生活随笔
收集整理的這篇文章主要介紹了
【Java并发编程】20、DelayQueue实现订单的定时取消
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當訂單定時取消需要修改數據庫訂單狀態,但是怎么確定訂單什么時候應該改變狀態,解決方案有下面兩種:?
第一種,寫個定時器去每分鐘掃描數據庫,這樣更新及時,但是如果數據庫數據量大的話,會對數據庫造成很大的壓力。?
第二種,創建訂單的時候再訂單表里面創建一條記錄,然后把這條記錄保存到DelayQueue隊列里面,并且用一個子線程不斷地輪訓這個出隊的訂單。然后進行訂單狀態修改的狀態。?
下面是這個方式的實現:
1)保存訂單信息的Bean必須實現Delay接口。Delay里面有兩個重要的方法。一個是compareTo,該方法是用來比較隊列里面的訂單的順序。另外一個是getDelay,用來判斷最前面訂單出隊的時間。?
2)創建線程類。去調用對應的Service方法來操作數據庫。?
?
3.系統剛一啟動就要把數據庫里面未付款的訂單加載到Queue里面,并且調用線程池生成子線程,這樣可以確保子線程出異常后,不會影響到后續的訂單處理。啟動子線程不斷監控要出隊的訂單。?
4.當客戶取消訂單的時候,需要程序從Queue里面刪除訂單信息。?
?
出處:http://blog.csdn.net/zj972535075/article/details/66476495
總結
以上是生活随笔為你收集整理的【Java并发编程】20、DelayQueue实现订单的定时取消的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shodan搜索引擎介绍
- 下一篇: Hibernate【查询、连接池、逆向工