java Web 计时器


我用 jsp+servlet+mysql 搞了一个众筹网站。当一个项目发起后,它有一个众筹时间,过了这个时间,项目就会从众筹状态转到另一个状态,当然,这需要在数据库中去操作。那么,如何设计一个计时器,在规定时间将触发,去更改相应的数据库表呢?

java javaweb mysql web服务器 java-ee

一只玲珑辞 9 years, 10 months ago

有一个问题
时间到了以后,从一个状态转到另一个状态,除了改变这个字段的值以外,还有其它需要触发进行的操作么?
如果没有,很可能你不需要一个定时任务。

只需要在数据库中记录项目发起时间和期限,在需要判断状态的时候根据这两个值和当前时间,决定项目的状态。
类似于你的网站里记录用户的生日信息,在页面显示用户年龄。我想没有人会真的在数据库保存年龄然后每天刷新的。

落雨大水浸街丶 answered 9 years, 10 months ago

可以用java.util.Timer类的schedule方法

nineo answered 9 years, 10 months ago

楼上提到 java.util.Timer

如果要使用,题主需要注意这种情况


 public class BadCaseOfTimer {

    public static void main(String[] args) {
        Timer timer = new Timer();

        timer.schedule(new ThrowTask(),1);
        timer.schedule(new ThrowTask(),1);


    }

    static class ThrowTask extends TimerTask{

        @Override
        public void run() {
            System.out.println("runnin.."+System.currentTimeMillis());
            throw new RuntimeException();
        }
    }

}

天空中的人 answered 9 years, 10 months ago

Spring+quartz 做定时任务

bobgb answered 9 years, 10 months ago

Your Answer