【Java并发编程】20、DelayQueue实现订单的定时…
2018-06-18 02:55:52来源:未知 阅读 ()
当订单定时取消需要修改数据库订单状态,但是怎么确定订单什么时候应该改变状态,解决方案有下面两种:
第一种,写个定时器去每分钟扫描数据库,这样更新及时,但是如果数据库数据量大的话,会对数据库造成很大的压力。
第二种,创建订单的时候再订单表里面创建一条记录,然后把这条记录保存到DelayQueue队列里面,并且用一个子线程不断地轮训这个出队的订单。然后进行订单状态修改的状态。
下面是这个方式的实现:
1)保存订单信息的Bean必须实现Delay接口。Delay里面有两个重要的方法。一个是compareTo,该方法是用来比较队列里面的订单的顺序。另外一个是getDelay,用来判断最前面订单出队的时间。
2)创建线程类。去调用对应的Service方法来操作数据库。
3.系统刚一启动就要把数据库里面未付款的订单加载到Queue里面,并且调用线程池生成子线程,这样可以确保子线程出异常后,不会影响到后续的订单处理。启动子线程不断监控要出队的订单。
4.当客户取消订单的时候,需要程序从Queue里面删除订单信息。
出处:http://blog.csdn.net/zj972535075/article/details/66476495
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash