如何使用计时器自动调用函数?

时间:2014-10-08 12:10:00

标签: java

我编写了一个代码,用于向正常工作的用户发送电子邮件。 但有了这个,我想添加一个计时器,通过在特定的时间间隔设置它自动发送给用户。

所以需要帮助才能知道如何做到这一点..

2 个答案:

答案 0 :(得分:1)

您可以尝试类似于此的构造:

public class TestClass {
    public long myLong = 1234;

    public static void main(String[] args) {
        final TestClass test = new TestClass();

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                test.doStuff();
            }
        }, 0, test.myLong);
    }

    public void doStuff(){
        //do stuff here
    }
}

答案 1 :(得分:0)

现代的方法是使用ScheduledExecutorService,这是Joshua Bloch在“Effective Java”中推荐的:

final int initialDelay = 0; // the initial delay in minutes (or whatever you specify below)
final int period = 5; // the period in minutes (...)
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
ex.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        sendEmail();
    }
}, initialDelay, period, TimeUnit.MINUTES);
// or, with Java 8:
ex.scheduleAtFixedRate(() -> sendEmail(), initialDelay, period, TimeUnit.MINUTES);
// when finished:
ex.shutdown();

请参阅ScheduledExecutorService的javadoc:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html