功能需求:     每月最后一天23:59分定时执行指定的任务,用JAVA能实现吗?
    
     若能实现,还请赐教并不吝细节~~~

解决方案 »

  1.   

    当然可以,不过一个线程一个月才有机会执行一次(她会郁闷死的...)
    如果服务器down了,就不好说了啊,
    以前写的定时任务是用Thread.sleep();
    据说不够精确,也有C友们说用Timer的哪个东东
    也有说用qua***什么的,忘记了,呵呵
      

  2.   

    是在WEB上用么?如果是在WEB上用的话,可以使用Spring任务调度
      

  3.   

    使用java.util.Timer或者Spring的任务(也是对Time的封装)
      

  4.   

    应用部署在服务器上?期间是一直长时间运行么?1.java.util.Timer()
    2.Executors.newSingleThreadScheduledExecutor() 
      

  5.   

    这种不大好
    因为web容器down掉了就没了
    而用quartz的话
    只有服务器挂了才不执行的
      

  6.   

    这个就是quartz,spring没有自己的任务调度,而是集成的quartz.
    你的这个需求用quartz是最适合的了
    quartz可以放在web环境使用,也可以单独使用,楼主googel一下就有很多资料
      

  7.   

    quartz 任务调度。
    定时执行任务。。
    做短信的时候用过,,不错的。。
    lz可以查查看,怎么用着
      

  8.   

    CRON 表达式写成这样就行了00 59 23 L * ?
      

  9.   

    linux服务器上用cronjob
    没必要使用java来实现,在linux已经提供的情况
      

  10.   

    linux下建议用cronjob,很方便!如果非要用java实现,可以考虑用java.util.Timer() ,也很方便
      

  11.   

    一定要23:59分吗?
    我暂时能想到的也是Timer,设定为每分钟执行一下,判断日期和时间是不是月底的23:59,是就执行,不是就不执行。
    或者可以用一个每天运行一次的Timer,判断是否到月底,是的话创建一个每小时执行一次的,然后直到分钟(老大套老二的战术)
    应该有更好的方法。
      

  12.   

    没谁规定spring和quartz必须在Web容器里运行。做成什么都行。
      

  13.   


    人家已经说了要执行指定的任务,我想这个任务肯定不会是个 Shell 脚本。 
      

  14.   

    楼主,可以参考一下public static void showTimer() {
            TimerTask task = new TimerTask() {
                @Override
                public void run() {
                    
                    System.out.println("执行定时任务!!!");
                }         };         Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);
            /*** 定制二日后00:24:00执行方法 ***/
            calendar.set(year, month, day, 20, 34, 00);
            Date date = calendar.getTime();
            Timer timer = new Timer();
            timer.schedule(task, date,1000);
        }     public static void main(String[] args) {
            showTimer();
        }
      

  15.   


    如果非得用java实现定时,可以用Timer 或者quartz等其实操作系统的定时任务,更适合你!
      

  16.   

    当然可以了,上面说的quartz  以及spring中定时器  都可以。
      

  17.   

    这种问题,问google,只需0.1秒就可以找到答案,莫非楼主分太多,就是为了散分?
      

  18.   

    最近碰到类似的需求去google去
      

  19.   

    cronjob 也能启动java程序啊
    或者把java程序批量写在一个shell脚本里面。
    我没显摆好不好。。真是的
      

  20.   

    用java的线程做就可以了我公司经常写这种监控程序
      

  21.   

    现在很少用cronjob了,如果用java的话quartz job,挂在tomcat下run。
      

  22.   

    1.java.util.Timer() 
    2.Executors.newSingleThreadScheduledExecutor() 
    定时执行
      

  23.   

    可以实现,使用Java 定时器TimerTask 或 自定义一个线程都可以。但这种功能最好使用操作系统的功能实现。
    1.如果是Windows,可以使用操作系统的定时任务。
    2.如果是Linux或Solaris,可以使用Cron表达式实现。
    这样才是比较合理的。
      

  24.   

      当然可以啊
       spring  有定时器啊,想什么时候跑就什么时候跑啊
      

  25.   

    quarz可以,但是服务器down掉后,再启动就不会执行了,所以在服务器启动时要判断是否已经执行指定任务
      

  26.   


    public static void showTimer() {
            TimerTask task = new TimerTask() {
                @Override
                public void run() {
                   
                    System.out.println("执行定时任务!!!");
                }        };        Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);
            /*** 定制二日后00:24:00执行方法 ***/
            calendar.set(year, month, day, 20, 34, 00);
            Date date = calendar.getTime();
            Timer timer = new Timer();
            timer.schedule(task, date,1000);
        }    public static void main(String[] args) {
            showTimer();
        }
      

  27.   

    可以考虑用quartz + spring
      

  28.   


    就是!如果为了每月底执行一次,就要让程序在内存中占用一个月的时间,太不划算了。
    直接用linux的crontab不就好了。