在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是该类的方法名称。