在Java中如何暂停运行几秒钟
时间:2020-02-23 14:34:03 来源:igfitidea点击:
在本教程中,我们将看到如何延迟Java程序几秒。
我们需要在许多情况下延迟Java程序,我们希望等待其他其他任务完成。
有多种方法可以延迟执行Java程序。
使用thread.sleep.
睡眠方法导致当前线程暂停特定的时间持续时间。
我们可以使用线程的类睡眠静态方法延迟执行Java程序。
这是一个相同的示例代码。
package org.arpit.theitroad;
public class DelayFewSecondsJava {
public static void main(String[] args) {
System.out.println("Going for sleep for 5 secs");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Resumed after 5 secs");
}
}
请注意,睡眠方法的时间单位是毫秒,这就是为什么我们已经通过了5000秒延迟了5000。
睡眠方法并不总是准确的,因为它取决于系统定时器和调度程序。
使用tumneUnit.xxx.sleep方法
我们可以使用java.util.concurrent.timeUnit以睡眠特定的时间。
例如:要睡眠5分钟,我们可以使用以下代码
TimeUnit.MINUTES.sleep(5)
睡眠10秒,我们可以使用以下代码
TimeUnit.Seconds.sleep(10)
package org.arpit.theitroad;
import java.util.concurrent.TimeUnit;
public class DelayFewSecondsJava {
public static void main(String[] args) {
System.out.println("Going for sleep for 10 secs");
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Resumed after 10 secs");
}
}
内部TimeUnit.seconds.sleep将调用thread.sleep方法。
只有区别是可读性。
使用scheduledexecutorservice.
我们还可以使用ScheduledExecutorService,这是executor framework的一部分。
这是暂停任何Java程序的最精确和强大的解决方案。
我强烈建议使用ScheduleDexecutorService,以防我们每秒或者几秒钟延迟运行任务。
例如:要每秒运行任务,我们可以使用以下代码。
package org.arpit.theitroad;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class DelayFewSecondsJava {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(DelayFewSecondsJava::runTask, 0, 1, TimeUnit.SECONDS);
}
public static void runTask()
{
System.out.println("Running the task each second");
}
}
Executorservice.scheduleatfixedrate(delayfewsecondsjava :: runtask,0,1,tateUnit.seconds);
这里delayfewsecondsjava是className和RunTask是该类的方法名称。

