Java에서 몇 초를 지연시키는 방법
Mohammad Irfan
2023년10월12일
-
Java에서
Thread.sleep()
메소드를 사용하여 지연시키기 -
Java에서
TimeUnit.sleep()
메소드를 사용하여 지연시키기 -
Java에서
ScheduledExecutorService
를 사용하여 지연시키기 -
Java에서
ScheduledExecutorService
를 사용하여 지연시키기
이 자습서에서는 Java에서 지연을 만드는 방법을 소개하고이를 이해하기위한 몇 가지 예제 코드를 나열합니다.
딜레이를 생성하는 방법에는TimeUnit.sleep()
,ScheduleAtFixedRate()
,Thread.sleep()
메소드 등 여러 가지가 있습니다. 예제를 살펴 보겠습니다.
Java에서Thread.sleep()
메소드를 사용하여 지연시키기
Thread
는 작업을 동시에 생성하고 실행하는 데 사용되는 Java 클래스로 현재 실행을 잠시 일시 중지하는 sleep()
메서드를 제공합니다.
public class SimpleTesting {
public static void main(String[] args) {
try {
for (int i = 0; i < 2; i++) {
Thread.sleep(1000);
System.out.println("Sleep " + i);
}
} catch (Exception e) {
System.out.println(e);
}
}
}
출력:
Sleep 0
Sleep 1
Java에서TimeUnit.sleep()
메소드를 사용하여 지연시키기
이 예제에서는 지정된 시간 동안 실행 지연을 만드는 데 사용되는TimeUnit
클래스의sleep()
메서드를 사용했습니다. TimeUnit
클래스는 Java의 동시 API 패키지에 속합니다.
import java.util.concurrent.TimeUnit;
public class SimpleTesting {
public static void main(String[] args) {
try {
for (int i = 0; i < 2; i++) {
TimeUnit.SECONDS.sleep(2);
System.out.println("Sleep " + i);
}
} catch (Exception e) {
System.out.println(e);
}
}
}
출력:
Sleep 0
Sleep 1
Java에서ScheduledExecutorService
를 사용하여 지연시키기
Java는 동시 환경에서 실행을 예약하기 위해ScheduledExecutorService
클래스를 제공합니다. 내부에run()
메소드를 사용하여 별도의 실행 경로를 실행할 수 있습니다. 아래 예를 참조하십시오.
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String args[]) {
try {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
executeTask();
}
}, 0, 1, TimeUnit.SECONDS);
} catch (Exception e) {
System.out.println(e);
}
}
private static void executeTask() {
System.out.println("Task Executing... ");
}
}
출력:
Task Executing...
Task Executing...
Task Executing...
Java에서ScheduledExecutorService
를 사용하여 지연시키기
Java 9 이상 버전으로 작업하는 경우 메서드 참조 개념을 사용하여scheduleAtFixedRate()
메서드 내에서 메서드를 호출 할 수 있습니다. 아래 예를 참조하십시오.
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class SimpleTesting {
public static void main(String[] args) {
try {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(SimpleTesting::executeTask, 1, 2, TimeUnit.SECONDS);
} catch (Exception e) {
System.out.println(e);
}
}
private static void executeTask() {
System.out.println("Task Executing... ");
}
}
출력:
Task Executing...
Task Executing...
Task Executing...