首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待具体日期。日历Java代码优化

等待具体日期。日历Java代码优化
EN

Stack Overflow用户
提问于 2011-07-21 09:32:14
回答 3查看 3.2K关注 0票数 3

我希望在特定的给定时间(给定时间的)使用Java 执行任务。我的代码工作,但看起来不太好。我在比较两根线。我试着用getTimeInMills()比较日期,但是数字并不相同。

这是我的密码:

代码语言:javascript
复制
import java.util.Calendar;

class Voter {
Calendar current,deadline;
boolean keepGoing = true;

public static void main(String[] args) {
    Voter strzal = new Voter();
    strzal.shoot();
}

public void shoot() {
    deadline = Calendar.getInstance();
    deadline.set(2011,6,21,11,20,00);

    while (keepGoing) {
        // wait 1 second
        try {
            Thread.sleep(1000);
            System.out.print(".");
        } catch (InterruptedException ex) { ex.printStackTrace(); }

        current = Calendar.getInstance();

        if (deadline.getTime().toString().equals(current.getTime().toString())) {
            System.out.println("Got it!");
            keepGoing = false;
        } // end of if
    } // end of while
} // end of shoot() method

}

我正在循环中运行,等待当前时间与截止日期相等(在一个示例中,我将其设置为2011年7月21日上午11:10 )。

如何改进我的代码?例如,我想使用Calendar类中的compareTo()或getTimeInMills()方法,但不能正确设置截止日期。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-21 09:41:02

使用ScheduledExecutorService是一个更好的建议,但对您的知识来说

代码语言:javascript
复制
Calendar deadline = Calendar.getInstance();
deadline.set(2011,6,21,11,20,00);
long endTime = deadline.getTime().getTime();

// later
long current = System.currentTimeMillis();
if (current >= endTime) {
    System.out.println("Got it!");
    break;
}
票数 3
EN

Stack Overflow用户

发布于 2011-07-21 09:36:25

使用ScheduledExecutorService来管理这一点,而不是睡觉和等待合适的时间。日程安排方法听起来似乎可以满足您的需要。

票数 4
EN

Stack Overflow用户

发布于 2011-07-21 09:40:56

别再发明轮子了!这有一个JDK类-- ScheduledThreadPoolExecutor。这里有一行代码可以完成所有操作:

代码语言:javascript
复制
new ScheduledThreadPoolExecutor(1).schedule(new Runnable() {
    public void run() {
        // Do something
    }
}, 1, TimeUnit.HOURS);

此示例等待1小时,但您可以用这么多秒或任何您需要的时间来替换它。

工作完成了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6774019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档