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+ }
0 commit comments