精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-05
比如内部文件交流模块,大家可以相互发送一些文件,这些文件存储在数据库中,与个人信息绑定,当这些文件存储超过一定的时间,比如2周,系统会自动将这些文件删除。 请教这个程序怎样实现比较好,效率高? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-03-05
用一个Timer类应该可以解决这个问题,实现一个daemon线程。
|
|
返回顶楼 | |
发表时间:2004-03-05
如果你有jdon的源程序,可以看看它里面的关于定时更新索引功能的实现. DbSearchManager.java + TimerEngine.java
|
|
返回顶楼 | |
发表时间:2004-03-06
有很多种方法,触发器也是可选的呀.
Timer这个方法也可以呀. 在ejb2.1中消息bean中也有了这个机制. 或者自己做一个程序,例如:一个servlet,每隔一段时就激活. 或者也可以用 任务(windows中的任务管理)+程序. |
|
返回顶楼 | |
发表时间:2004-03-06
用Timer执行TimeTask就可以了,TimeTask中启动多个线程(尤其工作量比较大的时候),不要用deamon线程,它是后端运行,不能进行跟踪,也无法主动杀死的,很容易出问题(自然也不方便调试)。
初始化执行Timer的程序最好是Singleton的,例如Servlet就是一个不错的选择。 |
|
返回顶楼 | |
发表时间:2004-03-08
为什么不使用 deamon ?典型应用阿
|
|
返回顶楼 | |
发表时间:2004-03-09
开始在考虑这个问题时,感觉最终使用Observer模式也许是一个不错的选择,
可是一直不能确定 thread 的 wait(long t)方法是不是一个好选择, 因为,当thread调用wait()方法后,线程被阻滞,进入block队列,等待long t 时间后,被激活,不太清楚的是这段等待时间,虚拟机是如何计算,然后激活线程的。 在看完jive的实现后,发现jive也使用了wait ()方法,而且实现方法和Observer也比较相似 Subject 及其子类-> Timer和TimerEngine Observer -> Runnable Observer子类 -> DbSearchManager 感觉就是这样。 pw:thatway说的 jive 的实现我看了1天才弄明白,领悟能力还需提高。 |
|
返回顶楼 | |
发表时间:2004-03-09
简单的需求用Timer,复杂的用quartz
不用自己重复发明轮子...... |
|
返回顶楼 | |
发表时间:2004-03-09
我上个项目就做了一个这样的定时器,也用了Observer模式,当然,在我所需要的线程中不需要去考虑wait,其实我也用过,但是一直报错,至今都没有搞清原因,所以我直接用sleep,呵呵,然后通过一中间对象进行状态的监控。超时后,Observer就会自动把线程杀死。(不用deamon的原因,是deamon的线程不受程序控制,你无法杀死,同时没有办法捕捉到它的状态。)原来Jive里面已经有好的应用了,呵呵,早知道就看看了。
楼上说的quartz是什么东东,有没有文档? |
|
返回顶楼 | |
发表时间:2004-03-09
http://www.quartzscheduler.org/quartz/
|
|
返回顶楼 | |