java - 日程管理

标签 java schedule

经过一番尝试和错误后,我终于让它按照我想要的方式工作。

但现在我想听听你的建议,让代码更具可读性和简单性,似乎制作了很多不必要的代码来归档我想要的内容。

这基本上做的是,如果您在计划任务应该运行的时间打开服务器应用程序,它将启动该任务并让它运行到它应该启动时剩余的时间,否则它将被计划在应该运行的时间运行。

因此,如果计划时间为 13:00:00,应运行 120 分钟,而您在 13:30 启动应用程序,它将运行 90 分钟。如果您在该时间之后启动,则通常会安排在第二天的 13:00:00。

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        long start_time = calendar.getTimeInMillis() - System.currentTimeMillis();

        if (start_time < 0)
        {
            long minutes = (start_time*-1) / (60 * 1000);
            if (minutes > 0 && minutes < 120)
            {
                runTimeLeft = 120 - minutes;
                ThreadPoolManager.getInstance().schedule(new Runnable()
                {
                    public void run()
                    {
                        myTask();
                    }
                }, 0);
            }
            else
                runTimeLeft = 0;

            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, hour+24);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);

            start_time = calendar.getTimeInMillis() - System.currentTimeMillis();
        }

        ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable()
        {
            public void run()
            {
                myTask();
            }
        }, start_time, 24 * 60 * 60 * 1000);

所以我现在的问题是我可以对上面的代码进行哪些改进?

最佳答案

不要单独使用java.util.Timer,而是尝试将其与TimerTask一起使用。 IBM 有一篇关于此的好文章。

看看这个链接:http://www.ibm.com/developerworks/java/library/j-schedule.html

该代码也是共享的,并且似乎适用于琐碎的日常工作。

关于java - 日程管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099711/

相关文章:

c++ - 计算一次占用的最大房间数

c# - Nservicebus : Sending a message in a Schedule. 每个 Action

java - Eclipse MyLyn 与 BugZilla : Will the BugZilla installation need to be modified/configured?

java - Java中如何运行依赖类文件

java - LibGDX Box2DLights 在渲染时抛出错误

java - 从 Selenium Webdriver 的下拉列表中选择选项时忽略大小写

java - 限制文本字段中的文本输入

c++ - Halide 最优调度

agile - 如何将FogBugz与敏捷方法一起使用?

javascript - 如何使用 JavaScript 开发调度日期应用程序