Skip to content

Commit dd160bf

Browse files
authored
Merge pull request eugenp#6977 from initialcommit-io/BAEL-2937
BAEL-2937
2 parents 362e780 + d67dd3c commit dd160bf

File tree

1 file changed

+91
-0
lines changed
  • core-java-modules/core-java-8-2/src/main/java/com/baeldung/delay

1 file changed

+91
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
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+
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+
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+
}

0 commit comments

Comments
 (0)