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