2012-08-11 52 views
1

是否有可能每一天,每一分钟,每一秒,每一年重复执行一项任务?我希望它像守护进程一样运行。你可以在Java中重复执行一项任务吗?

我需要一个计划任务来连续搜索数据库;如果它发现一个特定的值,那么它应该执行一个进一步的任务。

+0

你用'每一天意味着什么,每分钟每一秒每一year'?你想每年运行一次任务吗? – Madushan 2012-08-11 06:54:47

+0

没有每一次,因为我说像一个守护进程 – 2012-08-11 06:56:08

+0

@AzharAlam为什么不使用一个实际的守护进程线程?特别是像“守护进程”那样是什么意思? – 2012-08-11 07:02:04

回答

3

我想问是否有可能重复

您可以使用一个循环,或ScheduleExecutorService,或定时器,或石英。

每一天的每一分钟每一秒每一年

所以一旦第二。

我希望它像守护进程一样运行。

我只是把它作为一个守护线程然后。不需要使它像一个守护进程一样。

如果它找到正确的值,那么它应该完成剩余的任务。

够简单。

阅读数据,检查数值,以及是否想要其他数据。

0

为了完成基于时间的任务,您希望使用线程。看看这个链接,以了解更多关于它们的信息:

0

嗯所以程序会一直运行吗?可能要到 Java Timer

+0

是的,我想要一直运行程序 – 2012-08-11 07:02:40

2

我将统称为Java定时器框架的java.util.Timer和java.util.TimerTask类使程序员可以轻松地安排简单的任务。

public class Reminder { 
    Timer timer; 

    public Reminder(int seconds) { 
     timer = new Timer(); 
     timer.schedule(new RemindTask(), seconds*1000); 
    } 

    class RemindTask extends TimerTask { 
     public void run() { 
      System.out.format("Time's up!%n"); 
      timer.cancel(); //Terminate the timer thread 
     } 
    } 



    public static void main(String args[]) { 
     new Reminder(5); 
     System.out.format("Task scheduled.%n"); 
    } 
} 

OR 调度定时器任务运行反复

int delay = 5000; // delay for 5 sec. 
int period = 1000; // repeat every sec. 
Timer timer = new Timer(); 

timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() { 
      // Task here ... 
     } 
    }, delay, period); 
+0

谢谢这是我得到它的最简单的方式 – 2012-08-11 07:21:51

+0

谢谢。另一种选择是Thread使用Thread.sleep()方法 – 2012-08-11 07:23:59

相关问题