java:在特定秒数后运行函数

2022-08-31 06:44:54

我有一个特定的函数,我想在5秒后执行。如何在Java中做到这一点?

我找到了javax.swing.timer,但我真的不明白如何使用它。看起来我正在寻找比这个类提供的简单方法。

请添加一个简单的用法示例。


答案 1
new java.util.Timer().schedule( 
        new java.util.TimerTask() {
            @Override
            public void run() {
                // your code here
            }
        }, 
        5000 
);

编辑:

javadoc 说:

在对 Timer 对象的最后一个实时引用消失并且所有未完成的任务都已完成执行后,计时器的任务执行线程将正常终止(并受到垃圾回收的影响)。但是,这可能需要任意长时间才能发生。


答案 2

像这样:

// When your program starts up
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

// then, when you want to schedule a task
Runnable task = ....    
executor.schedule(task, 5, TimeUnit.SECONDS);

// and finally, when your program wants to exit
executor.shutdown();

如果您希望池中有更多的线程,则可以改用其他各种工厂方法。Executor

请记住,完成后关闭执行程序非常重要。该方法将在最后一个任务完成时干净地关闭线程池,并将阻塞,直到发生这种情况。 将立即终止线程池。shutdown()shutdownNow()