你能用Java重复执行一个任务吗?

时间:2012-08-11 06:50:39

标签: java scheduled-tasks

是否可以每年,每分钟,每秒,每年重复执行一项任务?我希望它像守护进程一样运行。

我需要一个计划任务来连续搜索数据库;如果它找到某个值,那么它应该执行另一个任务。

5 个答案:

答案 0 :(得分:3)

  

我想问一下是否可以重复

您可以使用循环,ScheduleExecutorService,Timer或Quartz。

  

每一天每一分钟每一天

所以一秒钟。

  

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

然后我会把它变成一个守护程序线程。不需要让它“像”一个守护进程。

  

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

足够简单。

读取数据,检查数值以及其余部分是否完成。

答案 1 :(得分:2)

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

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);

答案 2 :(得分:0)

或许查看java.util.TimerQuartz Scheduler会有所帮助。

ScheduledThreadPoolExecutor也可能有所帮助。查看他们的示例代码,您应该能够做到。

答案 3 :(得分:0)

为了根据时间执行任务,您需要使用线程。请查看此链接,以了解有关它们的更多信息:http://docs.oracle.com/javase/tutorial/essential/concurrency/threads.html

答案 4 :(得分:0)

嗯,程序将一直在运行?可能想查看 Java Timer