1

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

我需要一个定时任务来连续搜索数据库;如果它找到某个值,那么它应该执行进一步的任务。

4

5 回答 5

3

我想问是否可以重复

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

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

所以每秒一次。

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

那我就让它成为一个守护线程。不需要让它“像”一个守护进程。

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

很简单。

读取数据,检查值,如果它是你想要的,其余的。

于 2012-08-11T06:56:53.147 回答
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");
    }
}

安排定时器任务重复运行

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);
于 2012-08-11T07:07:58.057 回答
0

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

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

于 2012-08-11T06:56:14.370 回答
0

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

于 2012-08-11T06:56:27.473 回答
0

嗯,所以程序将一直运行?可能想研究Java Timer

于 2012-08-11T06:56:36.093 回答