如何为特定的小时和分钟制作Timer.schedule()?

时间:2011-07-22 19:40:00

标签: java timer scheduled-tasks

我试图让schedule()方法等到特定的小时和分钟 来开始执行任务,但它没有工作 因为方法schedule()不需要花费数小时和数分钟 作为一个论点,这种方法的替换是什么?我想我的时间安排好几个小时 然后当小时到来时程序检查分钟?如果两者都是正确的话 它会开始执行还是什么?

P.S 为了使事情更容易理解,如何使事情更容易理解 :

日程安排(新的TimerClass(), 所需的时间 所需的时间 )?

2 个答案:

答案 0 :(得分:0)

你不需要这样的硬编码。测试时间,然后是分钟。只需安排下面的任务。 下面给出的任务将在一小时后执行,并将在每30000ms重复一次。如果您只需要执行一次,则在第一次执行后取消时间,如使用t.cancel(),并将Hour + minute转换为ms以放置预定时间

 TimerTask scanTask;
final Handler handler = new Handler();
Timer t = new Timer();


scanTask = new TimerTask() {
        public void run() {
                handler.post(new Runnable() {
                        public void run() {
                         //do your task here    

                    }
               });
        }};

t.schedule(scanTask, 1*60*60*1000, 30000); 

答案 1 :(得分:0)

如果您想安排特定的时钟时间(而不是从当前时间延迟),可以选择以下选项:

  • 使用Quartz,如果您这样做足以证明其他库的合理性。 Quartz可以轻松指定时钟时间,并支持调度重复事件。
  • 否则,在您安排时,计算当前时间与所需时间之间的差异。 (使用Calendar类创建时钟时间,转换为Dates和getMillis()。)将差异输入Timer - 或ScheduledThreadPoolExecutor。