Skip to content

Commit 99f44b3

Browse files
Add package demonstrating how to delay code execution in java
1 parent 10f7493 commit 99f44b3

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.baeldung.delay;
2+
3+
import java.util.concurrent.Executors;
4+
import java.util.concurrent.ScheduledExecutorService;
5+
import java.util.concurrent.ScheduledFuture;
6+
import java.util.concurrent.TimeUnit;
7+
8+
public class Delay {
9+
10+
public static void main(String args[]) throws InterruptedException {
11+
12+
threadSleep(4, 1);
13+
14+
timeunitSleep(4, 1);
15+
16+
delayedServiceTask(5);
17+
18+
fixedRateServiceTask(5);
19+
20+
System.out.println("Done.");
21+
22+
return;
23+
24+
}
25+
26+
private static void threadSleep(Integer iterations, Integer secondsToSleep) {
27+
28+
for (Integer i = 0; i < iterations; i++) {
29+
30+
System.out.println("This is loop iteration number " + i.toString());
31+
32+
try {
33+
Thread.sleep(secondsToSleep * 1000);
34+
} catch (InterruptedException ie) {
35+
Thread.currentThread().interrupt();
36+
}
37+
38+
}
39+
40+
}
41+
42+
private static void timeunitSleep(Integer iterations, Integer secondsToSleep) {
43+
44+
for (Integer i = 0; i < iterations; i++) {
45+
46+
System.out.println("This is loop iteration number " + i.toString());
47+
48+
try {
49+
TimeUnit.SECONDS.sleep(secondsToSleep);
50+
} catch (InterruptedException ie) {
51+
Thread.currentThread().interrupt();
52+
}
53+
54+
}
55+
56+
}
57+
58+
private static void delayedServiceTask(Integer delayInSeconds) {
59+
60+
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
61+
62+
executorService.schedule(Delay::someTask1, delayInSeconds, TimeUnit.SECONDS);
63+
64+
}
65+
66+
private static void fixedRateServiceTask(Integer delayInSeconds) {
67+
68+
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
69+
70+
ScheduledFuture<?> sf = executorService.scheduleAtFixedRate(Delay::someTask2, 0, delayInSeconds,
71+
TimeUnit.SECONDS);
72+
73+
try {
74+
TimeUnit.SECONDS.sleep(20);
75+
} catch (InterruptedException ie) {
76+
Thread.currentThread().interrupt();
77+
}
78+
79+
sf.cancel(true);
80+
81+
}
82+
83+
private static void someTask1() {
84+
System.out.println("Task 1 completed.");
85+
}
86+
87+
private static void someTask2() {
88+
System.out.println("Task 2 completed.");
89+
}
90+
91+
public static int main(Boolean isTest) {
92+
return 0;
93+
}
94+
95+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.baeldung.delay;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
public class DelayUnitTest {
8+
9+
@Test
10+
void givenMain_returnZero() {
11+
assertEquals(Delay.main(true), 0);
12+
}
13+
14+
}

0 commit comments

Comments
 (0)