在JAVA中如何实现例如.每日晚上9:00系统会自动统计符合条件的清单,然后以Mail的形式发出去.
想知道调用什么类会实现每日晚上9:00系统自动统计清单.和具体的实现方法.十分十分的感谢!!!

解决方案 »

  1.   


    Timer timer=new Timer();
    TimerTask task=new TimerTask()
    {
        public void run()
        {
           //系统自动统计清单.和具体的实现方法. 
        }
    }
    Calendar cal=Calendar.getInstance();
    cal.set(HOUR_OF_DAY,9);
    cal.set(MINUTE,0);
    cal.set(SECONG,0);
    Date 九点整=cal.getTime();
    timer.schedule(task,九点整,24*60*60*1000L);//当天9点第一次运行,以后每隔24小时运行一次
      

  2.   

    修改下cal.set(HOUR_OF_DAY,21);//晚上9点
      

  3.   

    有个问题,如果任务运行时间过长,会导致以后每天都往后推迟,
    所以应该把任务的执行时间计算上去。实际上,这样的问题,可以写一个线程,每分钟激活一下,如果到了时间,就执行这个动作。如果复杂点,也可以使用Quartz,是一个开源任务调度框架,可以实现非常灵活的任务调度。
      

  4.   

    可以使用 scheduleAtFixedRate 代替 schedule,就可以解决所谓的每天推迟问题
    timer.scheduleAtFixedRate(task,九点整,24*60*60*1000L);
      

  5.   

    快啊 也试试
    import java.io.IOException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;public class Test {

    public static void main(String[] args) throws ParseException {
    SimpleDateFormat cdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
    Long delay = getSecondsDiff(cdf.format(new Date()), "2007-12-12 21:00:00");// new Date()为获取当前系统时间
            System.out.println(delay);
    Timer timer = new Timer();
    TimerTask myTask=new MyTask();
    timer.schedule(myTask, delay, 24 * 3600);
    timer.scheduleAtFixedRate(myTask, delay, 24 * 3600);

    while (true) {// 按c停止此任务,否则就一直循环执行此任务了
    try {
    int ch = System.in.read();
    if (ch - 'c' == 0) {
    timer.cancel();// 使用这个方法退出任务
    System.exit(0);
    }
    }
    catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    } public static class MyTask extends TimerTask {
    @Override
    public void run() {
    System.out.println("________");
    }
    } public static long getSecondsDiff(String sysdate, String time)
    throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat();
    format.applyPattern("yyyy-MM-dd HH:mm:ss");
    Date da1 = format.parse(sysdate);
    Date da2 = format.parse(time);
    long seconds = (da2.getTime() - da1.getTime());
    seconds = seconds / 1000;
    return seconds;
    }}
      

  6.   

    Quartz

    Timer
    Spring中封装了,更加容易使用