日期:2014-05-17  浏览次数:20653 次

多线程,TIMER与TIMERTASK相关的问题
问题大概是这样的:一个类似12306的订票系统,我们首先确定提交订单,加入我买了一张票,系统提示:您的订单已经被锁定。现在假如我不支付。这样的话,那这条订单就会在提示的锁定时间内被售票系统锁定。

我的实现方法是这样的,我新增一个timer单例,在这个timer单例上我将每一条未支付的订单都加在一个timertask上,挂在timer的任务队列中。根据票被锁定时间,设置该条task被执行延迟时间。

我有几个个疑问就是:

1、假如我往timer的任务队列中加入过多的task,这个timer会不会因为某一个task执行出现问题,而导致阻塞。

2、某些task执行时间过长,会不会出现后续的都增加延迟,导致延迟越来越大,如果这样的系统常年累月运行的话,会不会出现严重问题。

不知道大家能不能从我的只言片语中理解我所说的这个案例的大致情况,希望有javaSE了解多的人能指点迷津

先谢过了

------解决方案--------------------
这个用数据库作方便点吧12306不是你做的吧哈哈
在数据库添加一个字段用来锁定定时删一下就好了
------解决方案--------------------
Timer是单线程的,你说的问题都可能出现,并且还有其他一些问题,譬如Timer的线程因为受调度任务的异常而死掉,很可能Timer就挂掉了,so,强烈建议在jdk1.5及以后放弃Timer,转投Executors.newScheduledThreadPool

http://www.ticmy.com/?p=82
------解决方案--------------------
连接前面都已经简要说了

直接复制连接到浏览器可以打开